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