2017-07-11 04:08:08 +03: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 08:13:16 +03:00
i f e q ( $( CONFIG_DYNAMIC_FTRACE ) , y )
LDFLAGS_vmlinux := --no-relax
e n d i f
2017-07-11 04:08:08 +03: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 04:14:47 +03:00
2018-08-24 02:20:39 +03:00
KBUILD_LDFLAGS += -melf64lriscv
2017-07-11 04:08:08 +03:00
e l s e
BITS := 32
UTS_MACHINE := riscv32
KBUILD_CFLAGS += -mabi= ilp32
KBUILD_AFLAGS += -mabi= ilp32
2018-08-24 02:20:39 +03:00
KBUILD_LDFLAGS += -melf32lriscv
2017-07-11 04:08:08 +03:00
e n d i f
2018-10-09 05:18:32 +03:00
# ISA string setting
2019-04-15 12:14:35 +03:00
riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
2018-10-09 05:18:33 +03:00
riscv-march-$(CONFIG_FPU) := $( riscv-march-y) fd
2018-10-09 05:18:32 +03: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-11 04:08:08 +03: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 11:50:41 +03:00
i f e q ( $( CONFIG_MODULE_SECTIONS ) , y )
2019-08-14 19:06:22 +03:00
KBUILD_LDS_MODULE += $( srctree) /arch/riscv/kernel/module.lds
2018-03-15 11:50:41 +03:00
e n d i f
2019-08-29 09:57:00 +03:00
i f e q ( $( CONFIG_PERF_EVENTS ) , y )
KBUILD_CFLAGS += -fno-omit-frame-pointer
e n d i f
2018-03-15 11:50:41 +03:00
KBUILD_CFLAGS_MODULE += $( call cc-option,-mno-relax)
2017-07-11 04:08:08 +03: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 18:42:01 +03:00
# arch specific predefines for sparse
CHECKFLAGS += -D__riscv -D__riscv_xlen= $( BITS)
2018-11-12 08:55:15 +03:00
# Default target when executing plain make
boot := arch/riscv/boot
KBUILD_IMAGE := $( boot) /Image.gz
2017-07-11 04:08:08 +03:00
head-y := arch/riscv/kernel/head.o
2019-08-21 12:26:58 +03:00
core-y += arch/riscv/
2017-07-11 04:08:08 +03:00
libs-y += arch/riscv/lib/
2018-11-05 17:35:37 +03:00
PHONY += vdso_install
vdso_install :
$( Q) $( MAKE) $( build) = arch/riscv/kernel/vdso $@
2019-10-28 15:10:42 +03:00
i f e q ( $( CONFIG_RISCV_M_MODE ) , y )
KBUILD_IMAGE := $( boot) /loader
e l s e
KBUILD_IMAGE := $( boot) /Image.gz
e n d i f
BOOT_TARGETS := Image Image.gz loader
2018-11-12 08:55:15 +03:00
2019-10-28 15:10:42 +03:00
all : $( notdir $ ( KBUILD_IMAGE ) )
2018-11-12 08:55:15 +03:00
2019-10-28 15:10:42 +03:00
$(BOOT_TARGETS) : vmlinux
2018-11-12 08:55:15 +03:00
$( Q) $( MAKE) $( build) = $( boot) $( boot) /$@
2019-10-28 15:10:42 +03:00
@$( kecho) ' Kernel: $(boot)/$@ is ready'
2018-11-12 08:55:15 +03:00
zinstall install :
$( Q) $( MAKE) $( build) = $( boot) $@