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
KBUILD_DEFCONFIG = defconfig
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
KBUILD_CFLAGS += $( call cc-ifversion, -ge, 0500, -DCONFIG_ARCH_SUPPORTS_INT128)
2017-07-11 04:08:08 +03:00
KBUILD_MARCH = rv64im
LDFLAGS += -melf64lriscv
e l s e
BITS := 32
UTS_MACHINE := riscv32
KBUILD_CFLAGS += -mabi= ilp32
KBUILD_AFLAGS += -mabi= ilp32
KBUILD_MARCH = rv32im
LDFLAGS += -melf32lriscv
e n d i f
KBUILD_CFLAGS += -Wall
i f e q ( $( CONFIG_RISCV_ISA_A ) , y )
KBUILD_ARCH_A = a
e n d i f
i f e q ( $( CONFIG_RISCV_ISA_C ) , y )
KBUILD_ARCH_C = c
e n d i f
KBUILD_AFLAGS += -march= $( KBUILD_MARCH) $( KBUILD_ARCH_A) fd$( KBUILD_ARCH_C)
KBUILD_CFLAGS += -march= $( KBUILD_MARCH) $( KBUILD_ARCH_A) $( KBUILD_ARCH_C)
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 )
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-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)
2017-07-11 04:08:08 +03:00
head-y := arch/riscv/kernel/head.o
core-y += arch/riscv/kernel/ arch/riscv/mm/
libs-y += arch/riscv/lib/
all : vmlinux