1# SPDX-License-Identifier: GPL-2.0
2#
3# linux/arch/arm/boot/bootp/Makefile
4#
5# This file is included by the global makefile so that you can add your own
6# architecture-specific flags and dependencies.
7#
8GCOV_PROFILE	:= n
9
10ifdef PHYS_OFFSET
11add_hex = $(shell printf 0x%x $$(( $(1) + $(2) )) )
12
13# If PHYS_OFFSET is set, INITRD_PHYS and PARAMS_PHYS can be derived,
14# otherwise they must be passed on the command line.
15#
16# Note: the following conditions must always be true:
17#   PARAMS_PHYS must be within 4MB of ZRELADDR
18#   INITRD_PHYS must be in RAM
19
20PARAMS_PHYS := $(call add_hex, $(PHYS_OFFSET), 0x100)
21
22# guess an initrd location if possible
23initrd_offset-$(CONFIG_ARCH_FOOTBRIDGE)	+= 0x00800000
24initrd_offset-$(CONFIG_ARCH_SA1100)	+= 0x00800000
25initrd_offset-$(CONFIG_ARCH_RPC)	+= 0x08000000
26INITRD_OFFSET := $(initrd_offset-y)
27ifdef INITRD_OFFSET
28INITRD_PHYS := $(call add_hex, $(PHYS_OFFSET), $(INITRD_OFFSET))
29endif
30
31endif
32
33PHONY += initrd
34initrd:
35	@test "$(PARAMS_PHYS)" != "" || \
36	(echo bootpImage: You must specify PHYS_OFFSET of PARAMS_PHYS ; exit -1)
37	@test "$(INITRD_PHYS)" != "" || \
38	(echo bootpImage: You must specify INITRD_OFFSET or INITRD_PHYS ; exit -1)
39	@test "$(INITRD)" != "" || \
40	(echo bootpImage: You must specify INITRD; exit -1)
41
42LDFLAGS_bootp	:= --no-undefined -X \
43		 --defsym initrd_phys=$(INITRD_PHYS) \
44		 --defsym params_phys=$(PARAMS_PHYS) -T
45AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\"
46
47targets	:= bootp init.o kernel.o initrd.o
48
49# Note that bootp.lds picks up kernel.o and initrd.o
50$(obj)/bootp:	$(src)/bootp.lds $(addprefix $(obj)/,init.o kernel.o initrd.o) FORCE
51	$(call if_changed,ld)
52
53# kernel.o and initrd.o includes a binary image using
54# .incbin, a dependency which is not tracked automatically
55
56$(obj)/kernel.o: arch/arm/boot/zImage FORCE
57
58$(obj)/initrd.o: initrd $(INITRD) FORCE
59
60PHONY += $(INITRD)
61