Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 1 | # 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 Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 11 | OBJCOPYFLAGS := -O binary |
| 12 | LDFLAGS_vmlinux := |
Alan Kao | a1d2a6b | 2018-02-13 13:13:16 +0800 | [diff] [blame] | 13 | ifeq ($(CONFIG_DYNAMIC_FTRACE),y) |
| 14 | LDFLAGS_vmlinux := --no-relax |
| 15 | endif |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 16 | KBUILD_AFLAGS_MODULE += -fPIC |
| 17 | KBUILD_CFLAGS_MODULE += -fPIC |
| 18 | |
| 19 | KBUILD_DEFCONFIG = defconfig |
| 20 | |
| 21 | export BITS |
| 22 | ifeq ($(CONFIG_ARCH_RV64I),y) |
| 23 | BITS := 64 |
| 24 | UTS_MACHINE := riscv64 |
| 25 | |
| 26 | KBUILD_CFLAGS += -mabi=lp64 |
| 27 | KBUILD_AFLAGS += -mabi=lp64 |
Alex Guo | a89757d | 2018-07-29 01:14:47 +0000 | [diff] [blame] | 28 | |
| 29 | KBUILD_CFLAGS += $(call cc-ifversion, -ge, 0500, -DCONFIG_ARCH_SUPPORTS_INT128) |
| 30 | |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 31 | KBUILD_MARCH = rv64im |
Masahiro Yamada | d503ac5 | 2018-08-24 08:20:39 +0900 | [diff] [blame^] | 32 | KBUILD_LDFLAGS += -melf64lriscv |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 33 | else |
| 34 | BITS := 32 |
| 35 | UTS_MACHINE := riscv32 |
| 36 | |
| 37 | KBUILD_CFLAGS += -mabi=ilp32 |
| 38 | KBUILD_AFLAGS += -mabi=ilp32 |
| 39 | KBUILD_MARCH = rv32im |
Masahiro Yamada | d503ac5 | 2018-08-24 08:20:39 +0900 | [diff] [blame^] | 40 | KBUILD_LDFLAGS += -melf32lriscv |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 41 | endif |
| 42 | |
| 43 | KBUILD_CFLAGS += -Wall |
| 44 | |
| 45 | ifeq ($(CONFIG_RISCV_ISA_A),y) |
| 46 | KBUILD_ARCH_A = a |
| 47 | endif |
| 48 | ifeq ($(CONFIG_RISCV_ISA_C),y) |
| 49 | KBUILD_ARCH_C = c |
| 50 | endif |
| 51 | |
| 52 | KBUILD_AFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)fd$(KBUILD_ARCH_C) |
| 53 | |
| 54 | KBUILD_CFLAGS += -march=$(KBUILD_MARCH)$(KBUILD_ARCH_A)$(KBUILD_ARCH_C) |
| 55 | KBUILD_CFLAGS += -mno-save-restore |
| 56 | KBUILD_CFLAGS += -DCONFIG_PAGE_OFFSET=$(CONFIG_PAGE_OFFSET) |
| 57 | |
| 58 | ifeq ($(CONFIG_CMODEL_MEDLOW),y) |
| 59 | KBUILD_CFLAGS += -mcmodel=medlow |
| 60 | endif |
| 61 | ifeq ($(CONFIG_CMODEL_MEDANY),y) |
| 62 | KBUILD_CFLAGS += -mcmodel=medany |
| 63 | endif |
Zong Li | ab1ef68 | 2018-03-15 16:50:41 +0800 | [diff] [blame] | 64 | ifeq ($(CONFIG_MODULE_SECTIONS),y) |
| 65 | KBUILD_LDFLAGS_MODULE += -T $(srctree)/arch/riscv/kernel/module.lds |
| 66 | endif |
| 67 | |
| 68 | KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-relax) |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 69 | |
| 70 | # GCC versions that support the "-mstrict-align" option default to allowing |
| 71 | # unaligned accesses. While unaligned accesses are explicitly allowed in the |
| 72 | # RISC-V ISA, they're emulated by machine mode traps on all extant |
| 73 | # architectures. It's faster to have GCC emit only aligned accesses. |
| 74 | KBUILD_CFLAGS += $(call cc-option,-mstrict-align) |
| 75 | |
Luc Van Oostenryck | 889d746 | 2018-05-31 17:42:01 +0200 | [diff] [blame] | 76 | # arch specific predefines for sparse |
| 77 | CHECKFLAGS += -D__riscv -D__riscv_xlen=$(BITS) |
| 78 | |
Palmer Dabbelt | fbe934d | 2017-07-10 18:08:08 -0700 | [diff] [blame] | 79 | head-y := arch/riscv/kernel/head.o |
| 80 | |
| 81 | core-y += arch/riscv/kernel/ arch/riscv/mm/ |
| 82 | |
| 83 | libs-y += arch/riscv/lib/ |
| 84 | |
| 85 | all: vmlinux |