| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | # This file is included by the global makefile so that you can add your own | 
 | 2 | # architecture-specific flags and dependencies. Remember to do have actions | 
 | 3 | # for "archclean" and "archdep" for cleaning up and making dependencies for | 
 | 4 | # this architecture | 
 | 5 | # | 
 | 6 | # This file is subject to the terms and conditions of the GNU General Public | 
 | 7 | # License.  See the file "COPYING" in the main directory of this archive | 
 | 8 | # for more details. | 
 | 9 | # | 
 | 10 |  | 
 | 11 | OBJCOPYFLAGS    := -O binary | 
 | 12 | LDFLAGS_vmlinux := | 
 | 13 | ifeq ($(CONFIG_DYNAMIC_FTRACE),y) | 
 | 14 | 	LDFLAGS_vmlinux := --no-relax | 
 | 15 | endif | 
 | 16 | KBUILD_AFLAGS_MODULE += -fPIC | 
 | 17 | KBUILD_CFLAGS_MODULE += -fPIC | 
 | 18 |  | 
 | 19 | export BITS | 
 | 20 | ifeq ($(CONFIG_ARCH_RV64I),y) | 
 | 21 | 	BITS := 64 | 
 | 22 | 	UTS_MACHINE := riscv64 | 
 | 23 |  | 
 | 24 | 	KBUILD_CFLAGS += -mabi=lp64 | 
 | 25 | 	KBUILD_AFLAGS += -mabi=lp64 | 
 | 26 |  | 
 | 27 | 	KBUILD_LDFLAGS += -melf64lriscv | 
 | 28 | else | 
 | 29 | 	BITS := 32 | 
 | 30 | 	UTS_MACHINE := riscv32 | 
 | 31 |  | 
 | 32 | 	KBUILD_CFLAGS += -mabi=ilp32 | 
 | 33 | 	KBUILD_AFLAGS += -mabi=ilp32 | 
 | 34 | 	KBUILD_LDFLAGS += -melf32lriscv | 
 | 35 | endif | 
 | 36 |  | 
 | 37 | ifeq ($(CONFIG_LD_IS_LLD),y) | 
 | 38 | ifeq ($(shell test $(CONFIG_LLD_VERSION) -lt 150000; echo $$?),0) | 
 | 39 | 	KBUILD_CFLAGS += -mno-relax | 
 | 40 | 	KBUILD_AFLAGS += -mno-relax | 
 | 41 | ifneq ($(LLVM_IAS),1) | 
 | 42 | 	KBUILD_CFLAGS += -Wa,-mno-relax | 
 | 43 | 	KBUILD_AFLAGS += -Wa,-mno-relax | 
 | 44 | endif | 
 | 45 | endif | 
 | 46 | endif | 
 | 47 |  | 
 | 48 | # ISA string setting | 
 | 49 | riscv-march-$(CONFIG_ARCH_RV32I)	:= rv32ima | 
 | 50 | riscv-march-$(CONFIG_ARCH_RV64I)	:= rv64ima | 
 | 51 | riscv-march-$(CONFIG_FPU)		:= $(riscv-march-y)fd | 
 | 52 | riscv-march-$(CONFIG_RISCV_ISA_C)	:= $(riscv-march-y)c | 
 | 53 |  | 
 | 54 | # Newer binutils versions default to ISA spec version 20191213 which moves some | 
 | 55 | # instructions from the I extension to the Zicsr and Zifencei extensions. | 
 | 56 | toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zicsr_zifencei) | 
 | 57 | riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei | 
 | 58 |  | 
 | 59 | KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y)) | 
 | 60 | KBUILD_AFLAGS += -march=$(riscv-march-y) | 
 | 61 |  | 
 | 62 | KBUILD_CFLAGS += -mno-save-restore | 
 | 63 | KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET) | 
 | 64 |  | 
 | 65 | ifeq ($(CONFIG_CMODEL_MEDLOW),y) | 
 | 66 | 	KBUILD_CFLAGS += -mcmodel=medlow | 
 | 67 | endif | 
 | 68 | ifeq ($(CONFIG_CMODEL_MEDANY),y) | 
 | 69 | 	KBUILD_CFLAGS += -mcmodel=medany | 
 | 70 | endif | 
 | 71 | ifeq ($(CONFIG_MODULE_SECTIONS),y) | 
 | 72 | 	KBUILD_LDS_MODULE += $(srctree)/arch/riscv/kernel/module.lds | 
 | 73 | endif | 
 | 74 | ifeq ($(CONFIG_PERF_EVENTS),y) | 
 | 75 |         KBUILD_CFLAGS += -fno-omit-frame-pointer | 
 | 76 | endif | 
 | 77 |  | 
 | 78 | # Avoid generating .eh_frame sections. | 
 | 79 | KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables | 
 | 80 |  | 
 | 81 | KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) | 
 | 82 | KBUILD_AFLAGS_MODULE += $(call as-option,-Wa$(comma)-mno-relax) | 
 | 83 |  | 
 | 84 | # GCC versions that support the "-mstrict-align" option default to allowing | 
 | 85 | # unaligned accesses.  While unaligned accesses are explicitly allowed in the | 
 | 86 | # RISC-V ISA, they're emulated by machine mode traps on all extant | 
 | 87 | # architectures.  It's faster to have GCC emit only aligned accesses. | 
 | 88 | KBUILD_CFLAGS += $(call cc-option,-mstrict-align) | 
 | 89 |  | 
 | 90 | # arch specific predefines for sparse | 
 | 91 | CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS) | 
 | 92 |  | 
 | 93 | # Default target when executing plain make | 
 | 94 | boot		:= arch/riscv/boot | 
 | 95 | KBUILD_IMAGE	:= $(boot)/Image.gz | 
 | 96 |  | 
 | 97 | head-y := arch/riscv/kernel/head.o | 
 | 98 |  | 
 | 99 | core-y += arch/riscv/ | 
 | 100 |  | 
 | 101 | libs-y += arch/riscv/lib/ | 
 | 102 |  | 
 | 103 | PHONY += vdso_install | 
 | 104 | vdso_install: | 
 | 105 | 	$(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@ | 
 | 106 |  | 
 | 107 | all: Image.gz | 
 | 108 |  | 
 | 109 | Image: vmlinux | 
 | 110 | 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ | 
 | 111 |  | 
 | 112 | Image.%: Image | 
 | 113 | 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ | 
 | 114 |  | 
 | 115 | zinstall install: | 
 | 116 | 	$(Q)$(MAKE) $(build)=$(boot) $@ |