2017-07-10 18:08:08 -07:00
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" and "archdep" for cleaning up and making dependencies for
# this architecture
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
OBJCOPYFLAGS := -O binary
LDFLAGS_vmlinux :=
2018-02-13 13:13:16 +08:00
i f e q ( $( CONFIG_DYNAMIC_FTRACE ) , y )
LDFLAGS_vmlinux := --no-relax
e n d i f
2017-07-10 18:08:08 -07:00
KBUILD_AFLAGS_MODULE += -fPIC
KBUILD_CFLAGS_MODULE += -fPIC
export BITS
i f e q ( $( CONFIG_ARCH_RV 64I ) , y )
BITS := 64
UTS_MACHINE := riscv64
KBUILD_CFLAGS += -mabi= lp64
KBUILD_AFLAGS += -mabi= lp64
2018-07-29 01:14:47 +00:00
2018-08-24 08:20:39 +09:00
KBUILD_LDFLAGS += -melf64lriscv
2017-07-10 18:08:08 -07:00
e l s e
BITS := 32
UTS_MACHINE := riscv32
KBUILD_CFLAGS += -mabi= ilp32
KBUILD_AFLAGS += -mabi= ilp32
2018-08-24 08:20:39 +09:00
KBUILD_LDFLAGS += -melf32lriscv
2017-07-10 18:08:08 -07:00
e n d i f
2018-10-09 10:18:32 +08:00
# ISA string setting
2019-04-15 11:14:35 +02:00
riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
2018-10-09 10:18:33 +08:00
riscv-march-$(CONFIG_FPU) := $( riscv-march-y) fd
2018-10-09 10:18:32 +08:00
riscv-march-$(CONFIG_RISCV_ISA_C) := $( riscv-march-y) c
KBUILD_CFLAGS += -march= $( subst fd,,$( riscv-march-y) )
KBUILD_AFLAGS += -march= $( riscv-march-y)
2017-07-10 18:08:08 -07:00
KBUILD_CFLAGS += -mno-save-restore
KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET= $( CONFIG_PAGE_OFFSET)
i f e q ( $( CONFIG_CMODEL_MEDLOW ) , y )
KBUILD_CFLAGS += -mcmodel= medlow
e n d i f
i f e q ( $( CONFIG_CMODEL_MEDANY ) , y )
KBUILD_CFLAGS += -mcmodel= medany
e n d i f
2018-03-15 16:50:41 +08:00
i f e q ( $( CONFIG_MODULE_SECTIONS ) , y )
KBUILD_LDFLAGS_MODULE += -T $( srctree) /arch/riscv/kernel/module.lds
e n d i f
KBUILD_CFLAGS_MODULE += $( call cc-option,-mno-relax)
2017-07-10 18:08:08 -07:00
# GCC versions that support the "-mstrict-align" option default to allowing
# unaligned accesses. While unaligned accesses are explicitly allowed in the
# RISC-V ISA, they're emulated by machine mode traps on all extant
# architectures. It's faster to have GCC emit only aligned accesses.
KBUILD_CFLAGS += $( call cc-option,-mstrict-align)
2018-05-31 17:42:01 +02:00
# arch specific predefines for sparse
CHECKFLAGS += -D__riscv -D__riscv_xlen= $( BITS)
2018-11-12 11:25:15 +05:30
# Default target when executing plain make
boot := arch/riscv/boot
KBUILD_IMAGE := $( boot) /Image.gz
2017-07-10 18:08:08 -07:00
head-y := arch/riscv/kernel/head.o
2019-08-21 18:26:58 +09:00
core-y += arch/riscv/
2017-07-10 18:08:08 -07:00
libs-y += arch/riscv/lib/
2018-11-05 15:35:37 +01:00
PHONY += vdso_install
vdso_install :
$( Q) $( MAKE) $( build) = arch/riscv/kernel/vdso $@
2018-11-12 11:25:15 +05:30
all : Image .gz
Image : vmlinux
$( Q) $( MAKE) $( build) = $( boot) $( boot) /$@
Image.% : Image
$( Q) $( MAKE) $( build) = $( boot) $( boot) /$@
zinstall install :
$( Q) $( MAKE) $( build) = $( boot) $@