forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/arch/riscv/Makefile
....@@ -13,10 +13,10 @@
1313 ifeq ($(CONFIG_DYNAMIC_FTRACE),y)
1414 LDFLAGS_vmlinux := --no-relax
1515 endif
16
-KBUILD_AFLAGS_MODULE += -fPIC
17
-KBUILD_CFLAGS_MODULE += -fPIC
1816
19
-KBUILD_DEFCONFIG = defconfig
17
+ifeq ($(CONFIG_CMODEL_MEDLOW),y)
18
+KBUILD_CFLAGS_MODULE += -mcmodel=medany
19
+endif
2020
2121 export BITS
2222 ifeq ($(CONFIG_ARCH_RV64I),y)
....@@ -25,10 +25,7 @@
2525
2626 KBUILD_CFLAGS += -mabi=lp64
2727 KBUILD_AFLAGS += -mabi=lp64
28
-
29
- KBUILD_CFLAGS += $(call cc-ifversion, -ge, 0500, -DCONFIG_ARCH_SUPPORTS_INT128)
3028
31
- KBUILD_MARCH = rv64im
3229 KBUILD_LDFLAGS += -melf64lriscv
3330 else
3431 BITS := 32
....@@ -36,22 +33,34 @@
3633
3734 KBUILD_CFLAGS += -mabi=ilp32
3835 KBUILD_AFLAGS += -mabi=ilp32
39
- KBUILD_MARCH = rv32im
4036 KBUILD_LDFLAGS += -melf32lriscv
4137 endif
4238
43
-KBUILD_CFLAGS += -Wall
44
-
45
-ifeq ($(CONFIG_RISCV_ISA_A),y)
46
- KBUILD_ARCH_A = a
39
+ifeq ($(CONFIG_LD_IS_LLD),y)
40
+ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 150000; echo $$?),0)
41
+ KBUILD_CFLAGS += -mno-relax
42
+ KBUILD_AFLAGS += -mno-relax
43
+ifneq ($(LLVM_IAS),1)
44
+ KBUILD_CFLAGS += -Wa,-mno-relax
45
+ KBUILD_AFLAGS += -Wa,-mno-relax
4746 endif
48
-ifeq ($(CONFIG_RISCV_ISA_C),y)
49
- KBUILD_ARCH_C = c
47
+endif
5048 endif
5149
52
-KBUILD_AFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)fd$(KBUILD_ARCH_C)
50
+# ISA string setting
51
+riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
52
+riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
53
+riscv-march-$(CONFIG_FPU) := $(riscv-march-y)fd
54
+riscv-march-$(CONFIG_RISCV_ISA_C) := $(riscv-march-y)c
5355
54
-KBUILD_CFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)$(KBUILD_ARCH_C)
56
+# Newer binutils versions default to ISA spec version 20191213 which moves some
57
+# instructions from the I extension to the Zicsr and Zifencei extensions.
58
+toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zicsr_zifencei)
59
+riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei
60
+
61
+KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
62
+KBUILD_AFLAGS += -march=$(riscv-march-y)
63
+
5564 KBUILD_CFLAGS += -mno-save-restore
5665 KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET)
5766
....@@ -61,11 +70,12 @@
6170 ifeq ($(CONFIG_CMODEL_MEDANY),y)
6271 KBUILD_CFLAGS += -mcmodel=medany
6372 endif
64
-ifeq ($(CONFIG_MODULE_SECTIONS),y)
65
- KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/riscv/kernel/module.lds
73
+ifeq ($(CONFIG_PERF_EVENTS),y)
74
+ KBUILD_CFLAGS += -fno-omit-frame-pointer
6675 endif
6776
6877 KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
78
+KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)
6979
7080 # GCC versions that support the "-mstrict-align" option default to allowing
7181 # unaligned accesses. While unaligned accesses are explicitly allowed in the
....@@ -76,14 +86,33 @@
7686 # arch specific predefines for sparse
7787 CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS)
7888
89
+# Default target when executing plain make
90
+boot := arch/riscv/boot
91
+KBUILD_IMAGE := $(boot)/Image.gz
92
+
7993 head-y := arch/riscv/kernel/head.o
8094
81
-core-y += arch/riscv/kernel/ arch/riscv/mm/
95
+core-y += arch/riscv/
8296
8397 libs-y += arch/riscv/lib/
98
+libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
8499
85100 PHONY += vdso_install
86101 vdso_install:
87102 $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@
88103
89
-all: vmlinux
104
+ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_SOC_KENDRYTE),yy)
105
+KBUILD_IMAGE := $(boot)/loader.bin
106
+else
107
+KBUILD_IMAGE := $(boot)/Image.gz
108
+endif
109
+BOOT_TARGETS := Image Image.gz loader loader.bin
110
+
111
+all: $(notdir $(KBUILD_IMAGE))
112
+
113
+$(BOOT_TARGETS): vmlinux
114
+ $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
115
+ @$(kecho) ' Kernel: $(boot)/$@ is ready'
116
+
117
+zinstall install:
118
+ $(Q)$(MAKE) $(build)=$(boot) $@