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