1 # SPDX-License-Identifier: GPL-2.0
3 OBJECT_FILES_NON_STANDARD
:= y
5 purgatory-y
:= head.o purgatory.o string.o sha256.o mem.o
7 targets
+= $(purgatory-y
) purgatory.ro kexec-purgatory.c
8 PURGATORY_OBJS
= $(addprefix $(obj
)/,$(purgatory-y
))
10 $(obj
)/sha256.o
: $(srctree
)/lib
/sha256.c FORCE
11 $(call if_changed_rule
,cc_o_c
)
13 $(obj
)/mem.o
: $(srctree
)/arch
/s390
/lib
/mem.S FORCE
14 $(call if_changed_rule
,as_o_S
)
16 $(obj
)/string.o
: $(srctree
)/arch
/s390
/lib
/string.c FORCE
17 $(call if_changed_rule
,cc_o_c
)
19 LDFLAGS_purgatory.ro
:= -e purgatory_start
-r
--no-undefined
-nostdlib
20 LDFLAGS_purgatory.ro
+= -z nodefaultlib
21 KBUILD_CFLAGS
:= -fno-strict-aliasing
-Wall
-Wstrict-prototypes
22 KBUILD_CFLAGS
+= -Wno-pointer-sign
-Wno-sign-compare
23 KBUILD_CFLAGS
+= -fno-zero-initialized-in-bss
-fno-builtin
-ffreestanding
24 KBUILD_CFLAGS
+= -c
-MD
-Os
-m64
-msoft-float
-fno-common
25 KBUILD_CFLAGS
+= $(call cc-option
,-fno-PIE
)
26 KBUILD_AFLAGS
:= $(filter-out -DCC_USING_EXPOLINE
,$(KBUILD_AFLAGS
))
28 $(obj
)/purgatory.ro
: $(PURGATORY_OBJS
) FORCE
31 quiet_cmd_bin2c
= BIN2C
$@
32 cmd_bin2c
= $(objtree
)/scripts
/bin2c kexec_purgatory
< $< > $@
34 $(obj
)/kexec-purgatory.c
: $(obj
)/purgatory.ro FORCE
35 $(call if_changed
,bin2c
)
37 obj-
$(CONFIG_ARCH_HAS_KEXEC_PURGATORY
) += kexec-purgatory.o