1 # SPDX-License-Identifier: GPL-2.0-only
3 # Makefile for the RISC-V Linux kernel
7 CFLAGS_REMOVE_ftrace.o
= $(CC_FLAGS_FTRACE
)
8 CFLAGS_REMOVE_patch.o
= $(CC_FLAGS_FTRACE
)
9 CFLAGS_REMOVE_sbi.o
= $(CC_FLAGS_FTRACE
)
10 CFLAGS_REMOVE_return_address.o
= $(CC_FLAGS_FTRACE
)
12 CFLAGS_syscall_table.o
+= $(call cc-option
,-Wno-override-init
,)
13 CFLAGS_compat_syscall_table.o
+= $(call cc-option
,-Wno-override-init
,)
15 ifdef CONFIG_KEXEC_CORE
16 AFLAGS_kexec_relocate.o
:= -mcmodel
=medany
$(call cc-option
,-mno-relax
)
19 # cmodel=medany and notrace when patching early
20 ifdef CONFIG_RISCV_ALTERNATIVE_EARLY
21 CFLAGS_alternative.o
:= -mcmodel
=medany
22 CFLAGS_cpufeature.o
:= -mcmodel
=medany
23 CFLAGS_sbi_ecall.o
:= -mcmodel
=medany
25 CFLAGS_REMOVE_alternative.o
= $(CC_FLAGS_FTRACE
)
26 CFLAGS_REMOVE_cpufeature.o
= $(CC_FLAGS_FTRACE
)
27 CFLAGS_REMOVE_sbi_ecall.o
= $(CC_FLAGS_FTRACE
)
29 ifdef CONFIG_RELOCATABLE
30 CFLAGS_alternative.o
+= -fno-pie
31 CFLAGS_cpufeature.o
+= -fno-pie
32 CFLAGS_sbi_ecall.o
+= -fno-pie
35 KASAN_SANITIZE_alternative.o
:= n
36 KASAN_SANITIZE_cpufeature.o
:= n
37 KASAN_SANITIZE_sbi_ecall.o
:= n
39 ifdef CONFIG_FORTIFY_SOURCE
40 CFLAGS_alternative.o
+= -D__NO_FORTIFY
41 CFLAGS_cpufeature.o
+= -D__NO_FORTIFY
42 CFLAGS_sbi_ecall.o
+= -D__NO_FORTIFY
46 extra-y
+= vmlinux.lds
50 obj-
$(CONFIG_RISCV_ALTERNATIVE
) += alternative.o
58 obj-y
+= return_address.o
61 obj-y
+= syscall_table.o
63 obj-y
+= sys_hwprobe.o
66 obj-y
+= riscv_ksyms.o
70 obj-y
+= vendor_extensions.o
71 obj-y
+= vendor_extensions
/
74 obj-
$(CONFIG_MMU
) += vdso.o vdso
/
76 obj-
$(CONFIG_RISCV_MISALIGNED
) += traps_misaligned.o
77 obj-
$(CONFIG_RISCV_MISALIGNED
) += unaligned_access_speed.o
78 obj-
$(CONFIG_RISCV_PROBE_UNALIGNED_ACCESS
) += copy-unaligned.o
79 obj-
$(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS
) += vec-copy-unaligned.o
81 obj-
$(CONFIG_FPU
) += fpu.o
82 obj-
$(CONFIG_FPU
) += kernel_mode_fpu.o
83 obj-
$(CONFIG_RISCV_ISA_V
) += vector.o
84 obj-
$(CONFIG_RISCV_ISA_V
) += kernel_mode_vector.o
85 obj-
$(CONFIG_SMP
) += smpboot.o
86 obj-
$(CONFIG_SMP
) += smp.o
87 obj-
$(CONFIG_SMP
) += cpu_ops.o
89 obj-
$(CONFIG_RISCV_BOOT_SPINWAIT
) += cpu_ops_spinwait.o
90 obj-
$(CONFIG_MODULES
) += module.o
91 obj-
$(CONFIG_MODULE_SECTIONS
) += module-sections.o
93 obj-
$(CONFIG_CPU_PM
) += suspend_entry.o suspend.o
94 obj-
$(CONFIG_HIBERNATION
) += hibernate.o hibernate-asm.o
96 obj-
$(CONFIG_FUNCTION_TRACER
) += mcount.o ftrace.o
97 obj-
$(CONFIG_DYNAMIC_FTRACE
) += mcount-dyn.o
99 obj-
$(CONFIG_PERF_EVENTS
) += perf_callchain.o
100 obj-
$(CONFIG_HAVE_PERF_REGS
) += perf_regs.o
101 obj-
$(CONFIG_RISCV_SBI
) += sbi.o sbi_ecall.o
102 ifeq ($(CONFIG_RISCV_SBI
), y
)
103 obj-
$(CONFIG_SMP
) += sbi-ipi.o
104 obj-
$(CONFIG_SMP
) += cpu_ops_sbi.o
106 obj-
$(CONFIG_HOTPLUG_CPU
) += cpu-hotplug.o
107 obj-
$(CONFIG_PARAVIRT
) += paravirt.o
108 obj-
$(CONFIG_KGDB
) += kgdb.o
109 obj-
$(CONFIG_KEXEC_CORE
) += kexec_relocate.o crash_save_regs.o machine_kexec.o
110 obj-
$(CONFIG_KEXEC_FILE
) += elf_kexec.o machine_kexec_file.o
111 obj-
$(CONFIG_CRASH_DUMP
) += crash_dump.o
112 obj-
$(CONFIG_VMCORE_INFO
) += vmcore_info.o
114 obj-
$(CONFIG_JUMP_LABEL
) += jump_label.o
116 obj-
$(CONFIG_CFI_CLANG
) += cfi.o
118 obj-
$(CONFIG_EFI
) += efi.o
119 obj-
$(CONFIG_COMPAT
) += compat_syscall_table.o
120 obj-
$(CONFIG_COMPAT
) += compat_signal.o
121 obj-
$(CONFIG_COMPAT
) += compat_vdso
/
123 obj-
$(CONFIG_64BIT
) += pi
/
124 obj-
$(CONFIG_ACPI
) += acpi.o
125 obj-
$(CONFIG_ACPI_NUMA
) += acpi_numa.o