summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-12-11 21:02:59 +0800
committerruki <[email protected]>2021-12-11 21:02:59 +0800
commit47ba653b6417a2fe8897e58e446406497dca4fac (patch)
tree736db649ca1ba69a784a82b375f1646f85307eb6
parent13585a08f101e70d640feb045d02137cdf3d6114 (diff)
support arm64 for linux driver
-rw-r--r--tests/projects/linux/driver/hello_makefile/Makefile2
-rw-r--r--xmake/rules/platform/linux/driver/driver_modules.lua5
2 files changed, 6 insertions, 1 deletions
diff --git a/tests/projects/linux/driver/hello_makefile/Makefile b/tests/projects/linux/driver/hello_makefile/Makefile
index 1d5aa92b4..f5fd14b88 100644
--- a/tests/projects/linux/driver/hello_makefile/Makefile
+++ b/tests/projects/linux/driver/hello_makefile/Makefile
@@ -6,7 +6,7 @@ else
PWD := $(shell pwd)
default:
- $(MAKE) -C $(KERN_DIR) V=1 M=$(PWD) modules
+ $(MAKE) -C $(KERN_DIR) V=1 ARCH=arm64 CROSS_COMPILE=/mnt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- M=$(PWD) modules
endif
clean:
diff --git a/xmake/rules/platform/linux/driver/driver_modules.lua b/xmake/rules/platform/linux/driver/driver_modules.lua
index 9e8c7c613..31f56a36f 100644
--- a/xmake/rules/platform/linux/driver/driver_modules.lua
+++ b/xmake/rules/platform/linux/driver/driver_modules.lua
@@ -159,6 +159,7 @@ function load(target)
target:add("cflags", "-mbig-endian", "-mabi=aapcs-linux", "-mfpu=vfp", "-marm", "-march=armv6k", "-mtune=arm1136j-s", "-msoft-float", "-Uarm")
target:add("defines", "__LINUX_ARM_ARCH__=6")
elseif target:is_arch("arm64", "arm64-v8a") then
+ target:add("cflags", "-mlittle-endian", "-mgeneral-regs-only", "-mabi=lp64")
end
-- add optional flags (fentry)
@@ -208,6 +209,8 @@ function link(target, opt)
table.join2(argv, "-m", "elf_" .. target:arch())
elseif target:is_arch("arm", "armv7") then
table.join2(argv, "-EB")
+ elseif target:is_arch("arm64", "arm64-v8a") then
+ table.join2(argv, "-EL", "-maarch64elf")
end
local targetfile_o = target:objectfile(targetfile)
table.join2(argv, "-r", "-o", targetfile_o)
@@ -250,6 +253,8 @@ function link(target, opt)
table.join2(argv, "-m", "elf_" .. target:arch())
elseif target:is_arch("arm", "armv7") then
table.join2(argv, "-EB", "--be8")
+ elseif target:is_arch("arm64", "arm64-v8a") then
+ table.join2(argv, "-EL", "-maarch64elf")
end
local targetfile_o = target:objectfile(targetfile)
table.join2(argv, "-r", "--build-id=sha1", "-T", ldscriptfile, "-o", targetfile, targetfile_o, targetfile_mod_o)