Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 1 | # This file is included by the global makefile so that you can add your own |
Masahiro Yamada | 8212f89 | 2021-10-13 15:36:22 +0900 | [diff] [blame] | 2 | # architecture-specific flags and dependencies. |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 3 | # |
| 4 | # This file is subject to the terms and conditions of the GNU General Public |
| 5 | # License. See the file "COPYING" in the main directory of this archive |
| 6 | # for more details. |
| 7 | # |
| 8 | |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 9 | OBJCOPYFLAGS := -O binary |
| 10 | LDFLAGS_vmlinux := |
Alan Kao | a1d2a6b | 2018-02-13 13:13:16 +0800 | [diff] [blame] | 11 | ifeq ($(CONFIG_DYNAMIC_FTRACE),y) |
| 12 | LDFLAGS_vmlinux := --no-relax |
Guo Ren | afc76b8 | 2020-12-17 16:01:41 +0000 | [diff] [blame] | 13 | KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY |
| 14 | CC_FLAGS_FTRACE := -fpatchable-function-entry=8 |
Alan Kao | a1d2a6b | 2018-02-13 13:13:16 +0800 | [diff] [blame] | 15 | endif |
Vincent Chen | aad15bc | 2020-02-21 10:47:55 +0800 | [diff] [blame] | 16 | |
Khem Raj | 5d2388d | 2021-06-06 15:09:40 -0700 | [diff] [blame] | 17 | ifeq ($(CONFIG_CMODEL_MEDLOW),y) |
Vincent Chen | aad15bc | 2020-02-21 10:47:55 +0800 | [diff] [blame] | 18 | KBUILD_CFLAGS_MODULE += -mcmodel=medany |
| 19 | endif |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 20 | |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 21 | export BITS |
| 22 | ifeq ($(CONFIG_ARCH_RV64I),y) |
| 23 | BITS := 64 |
| 24 | UTS_MACHINE := riscv64 |
| 25 | |
| 26 | KBUILD_CFLAGS += -mabi=lp64 |
| 27 | KBUILD_AFLAGS += -mabi=lp64 |
Alex Guo | a89757d | 2018-07-29 01:14:47 +0000 | [diff] [blame] | 28 | |
Masahiro Yamada | d503ac5 | 2018-08-24 08:20:39 +0900 | [diff] [blame] | 29 | KBUILD_LDFLAGS += -melf64lriscv |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 30 | else |
| 31 | BITS := 32 |
| 32 | UTS_MACHINE := riscv32 |
| 33 | |
| 34 | KBUILD_CFLAGS += -mabi=ilp32 |
| 35 | KBUILD_AFLAGS += -mabi=ilp32 |
Masahiro Yamada | d503ac5 | 2018-08-24 08:20:39 +0900 | [diff] [blame] | 36 | KBUILD_LDFLAGS += -melf32lriscv |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 37 | endif |
| 38 | |
Khem Raj | ec3a5cb | 2021-05-14 14:37:41 -0700 | [diff] [blame] | 39 | ifeq ($(CONFIG_LD_IS_LLD),y) |
| 40 | KBUILD_CFLAGS += -mno-relax |
| 41 | KBUILD_AFLAGS += -mno-relax |
Masahiro Yamada | 52cc02b | 2021-08-06 00:01:02 +0900 | [diff] [blame] | 42 | ifndef CONFIG_AS_IS_LLVM |
Khem Raj | ec3a5cb | 2021-05-14 14:37:41 -0700 | [diff] [blame] | 43 | KBUILD_CFLAGS += -Wa,-mno-relax |
| 44 | KBUILD_AFLAGS += -Wa,-mno-relax |
| 45 | endif |
| 46 | endif |
| 47 | |
Alan Kao | e8be530 | 2018-10-09 10:18:32 +0800 | [diff] [blame] | 48 | # ISA string setting |
Christoph Hellwig | 09afac7 | 2019-04-15 11:14:35 +0200 | [diff] [blame] | 49 | riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima |
| 50 | riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima |
Alan Kao | 9671f70 | 2018-10-09 10:18:33 +0800 | [diff] [blame] | 51 | riscv-march-$(CONFIG_FPU) := $(riscv-march-y)fd |
Alan Kao | e8be530 | 2018-10-09 10:18:32 +0800 | [diff] [blame] | 52 | riscv-march-$(CONFIG_RISCV_ISA_C) := $(riscv-march-y)c |
| 53 | KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y)) |
| 54 | KBUILD_AFLAGS += -march=$(riscv-march-y) |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 55 | |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 56 | KBUILD_CFLAGS += -mno-save-restore |
| 57 | KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET) |
| 58 | |
| 59 | ifeq ($(CONFIG_CMODEL_MEDLOW),y) |
| 60 | KBUILD_CFLAGS += -mcmodel=medlow |
| 61 | endif |
| 62 | ifeq ($(CONFIG_CMODEL_MEDANY),y) |
| 63 | KBUILD_CFLAGS += -mcmodel=medany |
| 64 | endif |
Mao Han | dbeb90b | 2019-08-29 14:57:00 +0800 | [diff] [blame] | 65 | ifeq ($(CONFIG_PERF_EVENTS),y) |
| 66 | KBUILD_CFLAGS += -fno-omit-frame-pointer |
| 67 | endif |
Zong Li | ab1ef68 | 2018-03-15 16:50:41 +0800 | [diff] [blame] | 68 | |
| 69 | KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 70 | |
| 71 | # GCC versions that support the "-mstrict-align" option default to allowing |
| 72 | # unaligned accesses. While unaligned accesses are explicitly allowed in the |
| 73 | # RISC-V ISA, they're emulated by machine mode traps on all extant |
| 74 | # architectures. It's faster to have GCC emit only aligned accesses. |
| 75 | KBUILD_CFLAGS += $(call cc-option,-mstrict-align) |
| 76 | |
Guo Ren | fea2fed | 2020-12-17 16:29:18 +0000 | [diff] [blame] | 77 | ifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y) |
| 78 | prepare: stack_protector_prepare |
| 79 | stack_protector_prepare: prepare0 |
| 80 | $(eval KBUILD_CFLAGS += -mstack-protector-guard=tls \ |
| 81 | -mstack-protector-guard-reg=tp \ |
| 82 | -mstack-protector-guard-offset=$(shell \ |
| 83 | awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}' \ |
| 84 | include/generated/asm-offsets.h)) |
| 85 | endif |
| 86 | |
Luc Van Oostenryck | 889d746 | 2018-05-31 17:42:01 +0200 | [diff] [blame] | 87 | # arch specific predefines for sparse |
| 88 | CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS) |
| 89 | |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 90 | # Default target when executing plain make |
| 91 | boot := arch/riscv/boot |
Vitaly Wool | 44c9225 | 2021-04-13 02:35:14 -0400 | [diff] [blame] | 92 | ifeq ($(CONFIG_XIP_KERNEL),y) |
| 93 | KBUILD_IMAGE := $(boot)/xipImage |
| 94 | else |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 95 | KBUILD_IMAGE := $(boot)/Image.gz |
Vitaly Wool | 44c9225 | 2021-04-13 02:35:14 -0400 | [diff] [blame] | 96 | endif |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 97 | |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 98 | head-y := arch/riscv/kernel/head.o |
| 99 | |
Vincent Chen | 6f4eea9 | 2021-03-22 22:26:03 +0800 | [diff] [blame] | 100 | core-$(CONFIG_RISCV_ERRATA_ALTERNATIVE) += arch/riscv/errata/ |
Anup Patel | 99cdc6c | 2021-09-27 17:10:01 +0530 | [diff] [blame] | 101 | core-$(CONFIG_KVM) += arch/riscv/kvm/ |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 102 | |
| 103 | libs-y += arch/riscv/lib/ |
Atish Patra | d707174 | 2020-09-17 15:37:14 -0700 | [diff] [blame] | 104 | libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 105 | |
David Abdurachmanov | f157d41 | 2018-11-05 15:35:37 +0100 | [diff] [blame] | 106 | PHONY += vdso_install |
| 107 | vdso_install: |
| 108 | $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@ |
| 109 | |
Andreas Schwab | 5a19c7e | 2021-11-02 16:51:43 +0100 | [diff] [blame] | 110 | ifeq ($(KBUILD_EXTMOD),) |
Palmer Dabbelt | a290f51 | 2021-08-25 22:52:45 -0700 | [diff] [blame] | 111 | ifeq ($(CONFIG_MMU),y) |
Saleem Abdulrasool | fde9c59 | 2021-08-04 17:32:14 +0000 | [diff] [blame] | 112 | prepare: vdso_prepare |
| 113 | vdso_prepare: prepare0 |
| 114 | $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso include/generated/vdso-offsets.h |
Palmer Dabbelt | a290f51 | 2021-08-25 22:52:45 -0700 | [diff] [blame] | 115 | endif |
Andreas Schwab | 5a19c7e | 2021-11-02 16:51:43 +0100 | [diff] [blame] | 116 | endif |
Saleem Abdulrasool | fde9c59 | 2021-08-04 17:32:14 +0000 | [diff] [blame] | 117 | |
Vitaly Wool | 44c9225 | 2021-04-13 02:35:14 -0400 | [diff] [blame] | 118 | ifneq ($(CONFIG_XIP_KERNEL),y) |
Damien Le Moal | 08734e0 | 2020-12-13 22:50:38 +0900 | [diff] [blame] | 119 | ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_SOC_CANAAN),yy) |
Christoph Hellwig | 37809df | 2020-03-16 09:47:43 +0900 | [diff] [blame] | 120 | KBUILD_IMAGE := $(boot)/loader.bin |
Christoph Hellwig | 405fe7a | 2019-10-28 13:10:42 +0100 | [diff] [blame] | 121 | else |
| 122 | KBUILD_IMAGE := $(boot)/Image.gz |
| 123 | endif |
Vitaly Wool | 44c9225 | 2021-04-13 02:35:14 -0400 | [diff] [blame] | 124 | endif |
| 125 | BOOT_TARGETS := Image Image.gz loader loader.bin xipImage |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 126 | |
Christoph Hellwig | 405fe7a | 2019-10-28 13:10:42 +0100 | [diff] [blame] | 127 | all: $(notdir $(KBUILD_IMAGE)) |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 128 | |
Christoph Hellwig | 405fe7a | 2019-10-28 13:10:42 +0100 | [diff] [blame] | 129 | $(BOOT_TARGETS): vmlinux |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 130 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ |
Christoph Hellwig | 405fe7a | 2019-10-28 13:10:42 +0100 | [diff] [blame] | 131 | @$(kecho) ' Kernel: $(boot)/$@ is ready' |
Anup Patel | c0fbcd9 | 2018-11-12 11:25:15 +0530 | [diff] [blame] | 132 | |
Kefeng Wang | c18d7c1 | 2020-11-04 14:14:59 +0800 | [diff] [blame] | 133 | Image.%: Image |
| 134 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ |
| 135 | |
Masahiro Yamada | 399c1ec | 2021-07-29 23:21:47 +0900 | [diff] [blame] | 136 | install: install-image = Image |
| 137 | zinstall: install-image = Image.gz |
| 138 | install zinstall: |
| 139 | $(CONFIG_SHELL) $(srctree)/$(boot)/install.sh $(KERNELRELEASE) \ |
| 140 | $(boot)/$(install-image) System.map "$(INSTALL_PATH)" |
Kefeng Wang | 2c42bcb | 2020-11-04 14:15:00 +0800 | [diff] [blame] | 141 | |
Randy Dunlap | 5d4595d | 2021-09-11 20:45:38 -0700 | [diff] [blame] | 142 | PHONY += rv32_randconfig |
| 143 | rv32_randconfig: |
| 144 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/riscv/configs/32-bit.config \ |
| 145 | -f $(srctree)/Makefile randconfig |
| 146 | |
| 147 | PHONY += rv64_randconfig |
| 148 | rv64_randconfig: |
| 149 | $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/riscv/configs/64-bit.config \ |
| 150 | -f $(srctree)/Makefile randconfig |