hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
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,36 @@
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
+ifndef CONFIG_AS_IS_LLVM
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
+ifdef CONFIG_TOOLCHAIN_NEEDS_OLD_ISA_SPEC
57
+KBUILD_CFLAGS += -Wa,-misa-spec=2.2
58
+KBUILD_AFLAGS += -Wa,-misa-spec=2.2
59
+else
60
+riscv-march-$(CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI) := $(riscv-march-y)_zicsr_zifencei
61
+endif
62
+
63
+KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
64
+KBUILD_AFLAGS += -march=$(riscv-march-y)
65
+
5566 KBUILD_CFLAGS += -mno-save-restore
5667 KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET)
5768
....@@ -61,11 +72,15 @@
6172 ifeq ($(CONFIG_CMODEL_MEDANY),y)
6273 KBUILD_CFLAGS += -mcmodel=medany
6374 endif
64
-ifeq ($(CONFIG_MODULE_SECTIONS),y)
65
- KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/riscv/kernel/module.lds
75
+ifeq ($(CONFIG_PERF_EVENTS),y)
76
+ KBUILD_CFLAGS += -fno-omit-frame-pointer
6677 endif
6778
79
+# Avoid generating .eh_frame sections.
80
+KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
81
+
6882 KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
83
+KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax)
6984
7085 # GCC versions that support the "-mstrict-align" option default to allowing
7186 # unaligned accesses. While unaligned accesses are explicitly allowed in the
....@@ -76,14 +91,33 @@
7691 # arch specific predefines for sparse
7792 CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS)
7893
94
+# Default target when executing plain make
95
+boot := arch/riscv/boot
96
+KBUILD_IMAGE := $(boot)/Image.gz
97
+
7998 head-y := arch/riscv/kernel/head.o
8099
81
-core-y += arch/riscv/kernel/ arch/riscv/mm/
100
+core-y += arch/riscv/
82101
83102 libs-y += arch/riscv/lib/
103
+libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
84104
85105 PHONY += vdso_install
86106 vdso_install:
87107 $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@
88108
89
-all: vmlinux
109
+ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_SOC_KENDRYTE),yy)
110
+KBUILD_IMAGE := $(boot)/loader.bin
111
+else
112
+KBUILD_IMAGE := $(boot)/Image.gz
113
+endif
114
+BOOT_TARGETS := Image Image.gz loader loader.bin
115
+
116
+all: $(notdir $(KBUILD_IMAGE))
117
+
118
+$(BOOT_TARGETS): vmlinux
119
+ $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
120
+ @$(kecho) ' Kernel: $(boot)/$@ is ready'
121
+
122
+zinstall install:
123
+ $(Q)$(MAKE) $(build)=$(boot) $@