blob: 8c29e553ef7fd945a13b80a11e69b9f98d4ab932 [file] [log] [blame]
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -07001# 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
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070011OBJCOPYFLAGS := -O binary
12LDFLAGS_vmlinux :=
Alan Kaoa1d2a6b2018-02-13 13:13:16 +080013ifeq ($(CONFIG_DYNAMIC_FTRACE),y)
14 LDFLAGS_vmlinux := --no-relax
15endif
Vincent Chenaad15bc2020-02-21 10:47:55 +080016
17ifeq ($(CONFIG_64BIT)$(CONFIG_CMODEL_MEDLOW),yy)
18KBUILD_CFLAGS_MODULE += -mcmodel=medany
19endif
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070020
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070021export BITS
22ifeq ($(CONFIG_ARCH_RV64I),y)
23 BITS := 64
24 UTS_MACHINE := riscv64
25
26 KBUILD_CFLAGS += -mabi=lp64
27 KBUILD_AFLAGS += -mabi=lp64
Alex Guoa89757d2018-07-29 01:14:47 +000028
Masahiro Yamadad503ac52018-08-24 08:20:39 +090029 KBUILD_LDFLAGS += -melf64lriscv
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070030else
31 BITS := 32
32 UTS_MACHINE := riscv32
33
34 KBUILD_CFLAGS += -mabi=ilp32
35 KBUILD_AFLAGS += -mabi=ilp32
Masahiro Yamadad503ac52018-08-24 08:20:39 +090036 KBUILD_LDFLAGS += -melf32lriscv
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070037endif
38
Alan Kaoe8be5302018-10-09 10:18:32 +080039# ISA string setting
Christoph Hellwig09afac72019-04-15 11:14:35 +020040riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
41riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
Alan Kao9671f702018-10-09 10:18:33 +080042riscv-march-$(CONFIG_FPU) := $(riscv-march-y)fd
Alan Kaoe8be5302018-10-09 10:18:32 +080043riscv-march-$(CONFIG_RISCV_ISA_C) := $(riscv-march-y)c
44KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
45KBUILD_AFLAGS += -march=$(riscv-march-y)
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070046
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070047KBUILD_CFLAGS += -mno-save-restore
48KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET)
49
50ifeq ($(CONFIG_CMODEL_MEDLOW),y)
51 KBUILD_CFLAGS += -mcmodel=medlow
52endif
53ifeq ($(CONFIG_CMODEL_MEDANY),y)
54 KBUILD_CFLAGS += -mcmodel=medany
55endif
Mao Handbeb90b2019-08-29 14:57:00 +080056ifeq ($(CONFIG_PERF_EVENTS),y)
57 KBUILD_CFLAGS += -fno-omit-frame-pointer
58endif
Zong Liab1ef682018-03-15 16:50:41 +080059
60KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070061
62# GCC versions that support the "-mstrict-align" option default to allowing
63# unaligned accesses. While unaligned accesses are explicitly allowed in the
64# RISC-V ISA, they're emulated by machine mode traps on all extant
65# architectures. It's faster to have GCC emit only aligned accesses.
66KBUILD_CFLAGS += $(call cc-option,-mstrict-align)
67
Luc Van Oostenryck889d7462018-05-31 17:42:01 +020068# arch specific predefines for sparse
69CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS)
70
Anup Patelc0fbcd92018-11-12 11:25:15 +053071# Default target when executing plain make
72boot := arch/riscv/boot
73KBUILD_IMAGE := $(boot)/Image.gz
74
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070075head-y := arch/riscv/kernel/head.o
76
Masahiro Yamada909548d2019-08-21 18:26:58 +090077core-y += arch/riscv/
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070078
79libs-y += arch/riscv/lib/
Atish Patrad7071742020-09-17 15:37:14 -070080libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070081
David Abdurachmanovf157d412018-11-05 15:35:37 +010082PHONY += vdso_install
83vdso_install:
84 $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@
85
Christoph Hellwig37809df2020-03-16 09:47:43 +090086ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_SOC_KENDRYTE),yy)
87KBUILD_IMAGE := $(boot)/loader.bin
Christoph Hellwig405fe7a2019-10-28 13:10:42 +010088else
89KBUILD_IMAGE := $(boot)/Image.gz
90endif
Christoph Hellwig37809df2020-03-16 09:47:43 +090091BOOT_TARGETS := Image Image.gz loader loader.bin
Anup Patelc0fbcd92018-11-12 11:25:15 +053092
Christoph Hellwig405fe7a2019-10-28 13:10:42 +010093all: $(notdir $(KBUILD_IMAGE))
Anup Patelc0fbcd92018-11-12 11:25:15 +053094
Christoph Hellwig405fe7a2019-10-28 13:10:42 +010095$(BOOT_TARGETS): vmlinux
Anup Patelc0fbcd92018-11-12 11:25:15 +053096 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
Christoph Hellwig405fe7a2019-10-28 13:10:42 +010097 @$(kecho) ' Kernel: $(boot)/$@ is ready'
Anup Patelc0fbcd92018-11-12 11:25:15 +053098
Kefeng Wangc18d7c12020-11-04 14:14:59 +080099Image.%: Image
100 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
101
Anup Patelc0fbcd92018-11-12 11:25:15 +0530102zinstall install:
103 $(Q)$(MAKE) $(build)=$(boot) $@
Kefeng Wang2c42bcb2020-11-04 14:15:00 +0800104
105archclean:
106 $(Q)$(MAKE) $(clean)=$(boot)