^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) # arch/arm/boot/Makefile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) # This file is included by the global makefile so that you can add your own
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) # architecture-specific flags and dependencies.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) # This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) # License. See the file "COPYING" in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) # for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) # Copyright (C) 1995-2002 Russell King
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) OBJCOPYFLAGS :=-O binary -R .comment -S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) ifneq ($(MACHINE),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) include $(MACHINE)/Makefile.boot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) # Note: the following conditions must always be true:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) # PARAMS_PHYS must be within 4MB of ZRELADDR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) # INITRD_PHYS must be in RAM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) ZRELADDR := $(zreladdr-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) PARAMS_PHYS := $(params_phys-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) INITRD_PHYS := $(initrd_phys-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) export ZRELADDR INITRD_PHYS PARAMS_PHYS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) targets := Image zImage xipImage bootpImage uImage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) ifeq ($(CONFIG_XIP_KERNEL),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) cmd_deflate_xip_data = $(CONFIG_SHELL) -c \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) '$(srctree)/$(src)/deflate_xip_data.sh $< $@'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ifeq ($(CONFIG_XIP_DEFLATED_DATA),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) quiet_cmd_mkxip = XIPZ $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) cmd_mkxip = $(cmd_objcopy) && $(cmd_deflate_xip_data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) quiet_cmd_mkxip = $(quiet_cmd_objcopy)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) cmd_mkxip = $(cmd_objcopy)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) $(obj)/xipImage: vmlinux FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) $(call if_changed,mkxip)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) @$(kecho) ' Physical Address of xipImage: $(CONFIG_XIP_PHYS_ADDR)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) $(obj)/Image $(obj)/zImage: FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) @echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) @echo 'Only the xipImage target is available in this case'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) @false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) $(obj)/xipImage: FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) @echo 'Kernel not configured for XIP (CONFIG_XIP_KERNEL!=y)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) @false
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) $(obj)/Image: vmlinux FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) $(call if_changed,objcopy)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) targets += Image.gz Image.lz4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) $(obj)/Image.gz: $(obj)/Image FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) $(call if_changed,gzip)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) $(obj)/Image.lz4: $(obj)/Image FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) $(call if_changed,lz4c)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) $(obj)/compressed/vmlinux: $(obj)/Image FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) $(Q)$(MAKE) $(build)=$(obj)/compressed $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) $(call if_changed,objcopy)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) ifneq ($(LOADADDR),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) UIMAGE_LOADADDR=$(LOADADDR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) ifeq ($(CONFIG_ZBOOT_ROM),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) UIMAGE_LOADADDR=$(ZRELADDR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) check_for_multiple_loadaddr = \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) if [ $(words $(UIMAGE_LOADADDR)) -ne 1 ]; then \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) echo 'multiple (or no) load addresses: $(UIMAGE_LOADADDR)'; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) echo 'This is incompatible with uImages'; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) echo 'Specify LOADADDR on the commandline to build an uImage'; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) false; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) $(obj)/uImage: $(obj)/zImage FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) @$(check_for_multiple_loadaddr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) $(call if_changed,uimage)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) $(obj)/bootp/bootp: $(obj)/zImage initrd FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) $(Q)$(MAKE) $(build)=$(obj)/bootp $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) $(call if_changed,objcopy)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) PHONY += initrd install zinstall uinstall
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) initrd:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) @test "$(INITRD_PHYS)" != "" || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) (echo This machine does not support INITRD; exit -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) @test "$(INITRD)" != "" || \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) (echo You must specify INITRD; exit -1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) $(obj)/Image System.map "$(INSTALL_PATH)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) zinstall:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) $(obj)/zImage System.map "$(INSTALL_PATH)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) uinstall:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) $(obj)/uImage System.map "$(INSTALL_PATH)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) subdir- := bootp compressed dts