drm/panthor: Don't add write fences to the shared BOs
[drm/drm-misc.git] / arch / riscv / purgatory / Makefile
blobfb9c917c9b45735d35be5166455331fddda65ef9
1 # SPDX-License-Identifier: GPL-2.0
3 purgatory-y := purgatory.o sha256.o entry.o string.o ctype.o memcpy.o memset.o
4 ifeq ($(CONFIG_KASAN_GENERIC)$(CONFIG_KASAN_SW_TAGS),)
5 purgatory-y += strcmp.o strlen.o strncmp.o
6 endif
8 targets += $(purgatory-y)
9 PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))
11 $(obj)/string.o: $(srctree)/lib/string.c FORCE
12 $(call if_changed_rule,cc_o_c)
14 $(obj)/ctype.o: $(srctree)/lib/ctype.c FORCE
15 $(call if_changed_rule,cc_o_c)
17 $(obj)/memcpy.o: $(srctree)/arch/riscv/lib/memcpy.S FORCE
18 $(call if_changed_rule,as_o_S)
20 $(obj)/memset.o: $(srctree)/arch/riscv/lib/memset.S FORCE
21 $(call if_changed_rule,as_o_S)
23 $(obj)/strcmp.o: $(srctree)/arch/riscv/lib/strcmp.S FORCE
24 $(call if_changed_rule,as_o_S)
26 $(obj)/strlen.o: $(srctree)/arch/riscv/lib/strlen.S FORCE
27 $(call if_changed_rule,as_o_S)
29 $(obj)/strncmp.o: $(srctree)/arch/riscv/lib/strncmp.S FORCE
30 $(call if_changed_rule,as_o_S)
32 $(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE
33 $(call if_changed_rule,cc_o_c)
35 CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY
36 CFLAGS_string.o := -D__DISABLE_EXPORTS
37 CFLAGS_ctype.o := -D__DISABLE_EXPORTS
39 # When profile-guided optimization is enabled, llvm emits two different
40 # overlapping text sections, which is not supported by kexec. Remove profile
41 # optimization flags.
42 KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS))
44 # When linking purgatory.ro with -r unresolved symbols are not checked,
45 # also link a purgatory.chk binary without -r to check for unresolved symbols.
46 PURGATORY_LDFLAGS := -e purgatory_start -z nodefaultlib
47 LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS)
48 LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS)
49 targets += purgatory.ro purgatory.chk
51 # These are adjustments to the compiler flags used for objects that
52 # make up the standalone purgatory.ro
54 PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel
55 PURGATORY_CFLAGS := -mcmodel=medany -ffreestanding -fno-zero-initialized-in-bss
56 PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING
57 PURGATORY_CFLAGS += -fno-stack-protector -g0
59 # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
60 # in turn leaves some undefined symbols like __fentry__ in purgatory and not
61 # sure how to relocate those.
62 ifdef CONFIG_FUNCTION_TRACER
63 PURGATORY_CFLAGS_REMOVE += $(CC_FLAGS_FTRACE)
64 endif
66 ifdef CONFIG_STACKPROTECTOR
67 PURGATORY_CFLAGS_REMOVE += -fstack-protector
68 endif
70 ifdef CONFIG_STACKPROTECTOR_STRONG
71 PURGATORY_CFLAGS_REMOVE += -fstack-protector-strong
72 endif
74 ifdef CONFIG_CFI_CLANG
75 PURGATORY_CFLAGS_REMOVE += $(CC_FLAGS_CFI)
76 endif
78 ifdef CONFIG_RELOCATABLE
79 PURGATORY_CFLAGS_REMOVE += -fPIE
80 endif
82 ifdef CONFIG_SHADOW_CALL_STACK
83 PURGATORY_CFLAGS_REMOVE += $(CC_FLAGS_SCS)
84 endif
86 CFLAGS_REMOVE_purgatory.o += $(PURGATORY_CFLAGS_REMOVE)
87 CFLAGS_purgatory.o += $(PURGATORY_CFLAGS)
89 CFLAGS_REMOVE_sha256.o += $(PURGATORY_CFLAGS_REMOVE)
90 CFLAGS_sha256.o += $(PURGATORY_CFLAGS)
92 CFLAGS_REMOVE_string.o += $(PURGATORY_CFLAGS_REMOVE)
93 CFLAGS_string.o += $(PURGATORY_CFLAGS)
95 CFLAGS_REMOVE_ctype.o += $(PURGATORY_CFLAGS_REMOVE)
96 CFLAGS_ctype.o += $(PURGATORY_CFLAGS)
98 asflags-remove-y += $(foreach x, -g -gdwarf-4 -gdwarf-5, $(x) -Wa,$(x))
100 $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
101 $(call if_changed,ld)
103 $(obj)/purgatory.chk: $(obj)/purgatory.ro FORCE
104 $(call if_changed,ld)
106 $(obj)/kexec-purgatory.o: $(obj)/purgatory.ro $(obj)/purgatory.chk
108 obj-y += kexec-purgatory.o