blob: b9009a2fbaf5c4dd7965f75264dee93539308019 [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
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070016KBUILD_AFLAGS_MODULE += -fPIC
17KBUILD_CFLAGS_MODULE += -fPIC
18
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070019export BITS
20ifeq ($(CONFIG_ARCH_RV64I),y)
21 BITS := 64
22 UTS_MACHINE := riscv64
23
24 KBUILD_CFLAGS += -mabi=lp64
25 KBUILD_AFLAGS += -mabi=lp64
Alex Guoa89757d2018-07-29 01:14:47 +000026
Masahiro Yamadad503ac52018-08-24 08:20:39 +090027 KBUILD_LDFLAGS += -melf64lriscv
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070028else
29 BITS := 32
30 UTS_MACHINE := riscv32
31
32 KBUILD_CFLAGS += -mabi=ilp32
33 KBUILD_AFLAGS += -mabi=ilp32
Masahiro Yamadad503ac52018-08-24 08:20:39 +090034 KBUILD_LDFLAGS += -melf32lriscv
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070035endif
36
Alan Kaoe8be5302018-10-09 10:18:32 +080037# ISA string setting
Christoph Hellwig09afac72019-04-15 11:14:35 +020038riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
39riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
Alan Kao9671f702018-10-09 10:18:33 +080040riscv-march-$(CONFIG_FPU) := $(riscv-march-y)fd
Alan Kaoe8be5302018-10-09 10:18:32 +080041riscv-march-$(CONFIG_RISCV_ISA_C) := $(riscv-march-y)c
42KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
43KBUILD_AFLAGS += -march=$(riscv-march-y)
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070044
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070045KBUILD_CFLAGS += -mno-save-restore
46KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET)
47
48ifeq ($(CONFIG_CMODEL_MEDLOW),y)
49 KBUILD_CFLAGS += -mcmodel=medlow
50endif
51ifeq ($(CONFIG_CMODEL_MEDANY),y)
52 KBUILD_CFLAGS += -mcmodel=medany
53endif
Zong Liab1ef682018-03-15 16:50:41 +080054ifeq ($(CONFIG_MODULE_SECTIONS),y)
Masahiro Yamada10df0632019-08-15 01:06:22 +090055 KBUILD_LDS_MODULE += $(srctree)/arch/riscv/kernel/module.lds
Zong Liab1ef682018-03-15 16:50:41 +080056endif
Mao Handbeb90b2019-08-29 14:57:00 +080057ifeq ($(CONFIG_PERF_EVENTS),y)
58 KBUILD_CFLAGS += -fno-omit-frame-pointer
59endif
Zong Liab1ef682018-03-15 16:50:41 +080060
61KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax)
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070062
63# GCC versions that support the "-mstrict-align" option default to allowing
64# unaligned accesses. While unaligned accesses are explicitly allowed in the
65# RISC-V ISA, they're emulated by machine mode traps on all extant
66# architectures. It's faster to have GCC emit only aligned accesses.
67KBUILD_CFLAGS += $(call cc-option,-mstrict-align)
68
Luc Van Oostenryck889d7462018-05-31 17:42:01 +020069# arch specific predefines for sparse
70CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS)
71
Anup Patelc0fbcd92018-11-12 11:25:15 +053072# Default target when executing plain make
73boot := arch/riscv/boot
74KBUILD_IMAGE := $(boot)/Image.gz
75
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070076head-y := arch/riscv/kernel/head.o
77
Masahiro Yamada909548d2019-08-21 18:26:58 +090078core-y += arch/riscv/
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070079
80libs-y += arch/riscv/lib/
81
David Abdurachmanovf157d412018-11-05 15:35:37 +010082PHONY += vdso_install
83vdso_install:
84 $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@
85
Christoph Hellwig405fe7a2019-10-28 13:10:42 +010086ifeq ($(CONFIG_RISCV_M_MODE),y)
87KBUILD_IMAGE := $(boot)/loader
88else
89KBUILD_IMAGE := $(boot)/Image.gz
90endif
91BOOT_TARGETS := Image Image.gz loader
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
99zinstall install:
100 $(Q)$(MAKE) $(build)=$(boot) $@