2 # This file is subject to the terms and conditions of the GNU General Public
5 # Adapted for MIPS Pete Popov, Dan Malek
7 # Copyright (C) 1994 by Linus Torvalds
8 # Adapted for PowerPC by Gary Thomas
9 # modified by Cort (cort@cs.nmt.edu)
11 # Copyright (C) 2009 Lemote Inc. & DSLab, Lanzhou University
12 # Author: Wu Zhangjin <wuzhangjin@gmail.com>
15 # compressed kernel load addr: VMLINUZ_LOAD_ADDRESS > VMLINUX_LOAD_ADDRESS + VMLINUX_SIZE
16 VMLINUX_SIZE
:= $(shell wc
-c
$(objtree
)/$(KBUILD_IMAGE
) 2>/dev
/null | cut
-d
' ' -f1
)
17 VMLINUX_SIZE
:= $(shell [ -n
"$(VMLINUX_SIZE)" ] && echo
-n
$$(($(VMLINUX_SIZE
) + (65536 - $(VMLINUX_SIZE
) % 65536))))
18 # VMLINUZ_LOAD_ADDRESS = concat "high32 of VMLINUX_LOAD_ADDRESS" and "(low32 of VMLINUX_LOAD_ADDRESS) + VMLINUX_SIZE"
19 HIGH32
:= $(shell A
=$(VMLINUX_LOAD_ADDRESS
); [ $${\
#A} -gt 10 ] && expr substr "$(VMLINUX_LOAD_ADDRESS)" 3 $$(($${\#A} - 10)))
20 LOW32
:= $(shell [ -n
"$(HIGH32)" ] && A
=11 || A
=3; expr substr
"$(VMLINUX_LOAD_ADDRESS)" $${A} 8)
21 VMLINUZ_LOAD_ADDRESS
:= 0x
$(shell [ -n
"$(VMLINUX_SIZE)" -a
-n
"$(LOW32)" ] && printf
"$(HIGH32)%08x" $$(($(VMLINUX_SIZE
) + 0x
$(LOW32
))))
23 # set the default size of the mallocing area for decompressing
24 BOOT_HEAP_SIZE
:= 0x400000
26 # Disable Function Tracer
27 KBUILD_CFLAGS
:= $(shell echo
$(KBUILD_CFLAGS
) | sed
-e
"s/-pg//")
29 KBUILD_CFLAGS
:= $(LINUXINCLUDE
) $(KBUILD_CFLAGS
) -D__KERNEL__ \
30 -DBOOT_HEAP_SIZE
=$(BOOT_HEAP_SIZE
) -D
"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull"
32 KBUILD_AFLAGS
:= $(LINUXINCLUDE
) $(KBUILD_AFLAGS
) -D__ASSEMBLY__ \
33 -DBOOT_HEAP_SIZE
=$(BOOT_HEAP_SIZE
) \
34 -DKERNEL_ENTRY
=0x
$(shell $(NM
) $(objtree
)/$(KBUILD_IMAGE
) 2>/dev
/null | grep
" kernel_entry" | cut
-f1
-d \
)
36 targets
:= head.o decompress.o dbg.o uart-16550.o uart-alchemy.o
38 # decompressor objects (linked with vmlinuz)
39 vmlinuzobjs-y
:= $(obj
)/head.o
$(obj
)/decompress.o
$(obj
)/dbg.o
41 ifdef CONFIG_DEBUG_ZBOOT
42 vmlinuzobjs-
$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550
) += $(obj
)/uart-16550.o
43 vmlinuzobjs-
$(CONFIG_MACH_ALCHEMY
) += $(obj
)/uart-alchemy.o
46 targets
+= vmlinux.bin
47 OBJCOPYFLAGS_vmlinux.bin
:= $(OBJCOPYFLAGS
) -O binary
-R .comment
-S
48 $(obj
)/vmlinux.bin
: $(KBUILD_IMAGE
) FORCE
49 $(call if_changed
,objcopy
)
51 suffix_
$(CONFIG_KERNEL_GZIP
) = gz
52 suffix_
$(CONFIG_KERNEL_BZIP2
) = bz2
53 suffix_
$(CONFIG_KERNEL_LZMA
) = lzma
54 suffix_
$(CONFIG_KERNEL_LZO
) = lzo
55 tool_
$(CONFIG_KERNEL_GZIP
) = gzip
56 tool_
$(CONFIG_KERNEL_BZIP2
) = bzip2
57 tool_
$(CONFIG_KERNEL_LZMA
) = lzma
58 tool_
$(CONFIG_KERNEL_LZO
) = lzo
60 targets
+= vmlinux.gz vmlinux.bz2 vmlinux.lzma vmlinux.lzo
61 $(obj
)/vmlinux.
$(suffix_y
): $(obj
)/vmlinux.bin FORCE
62 $(call if_changed
,$(tool_y
))
65 OBJCOPYFLAGS_piggy.o
:= --add-section
=.image
=$(obj
)/vmlinux.
$(suffix_y
) \
66 --set-section-flags
=.image
=contents
,alloc
,load
,readonly
,data
67 $(obj
)/piggy.o
: $(obj
)/dummy.o
$(obj
)/vmlinux.
$(suffix_y
) FORCE
68 $(call if_changed
,objcopy
)
70 LDFLAGS_vmlinuz
:= $(LDFLAGS
) -Ttext
$(VMLINUZ_LOAD_ADDRESS
) -T
71 vmlinuz
: $(src
)/ld.script
$(vmlinuzobjs-y
) $(obj
)/piggy.o
73 $(Q
)$(OBJCOPY
) $(OBJCOPYFLAGS
) $@
76 # Some DECstations need all possible sections of an ECOFF executable
78 ifdef CONFIG_MACH_DECSTATION
82 # elf2ecoff can only handle 32bit image
83 hostprogs-y
:= ..
/elf2ecoff
91 quiet_cmd_32
= OBJCOPY
$@
92 cmd_32
= $(OBJCOPY
) -O
$(32bit-bfd
) $(OBJCOPYFLAGS
) $< $@
96 quiet_cmd_ecoff
= ECOFF
$@
97 cmd_ecoff
= $< $(VMLINUZ
) $@
$(e2eflag
)
98 vmlinuz.ecoff
: $(obj
)/..
/elf2ecoff
$(VMLINUZ
)
101 OBJCOPYFLAGS_vmlinuz.bin
:= $(OBJCOPYFLAGS
) -O binary
105 OBJCOPYFLAGS_vmlinuz.srec
:= $(OBJCOPYFLAGS
) -S
-O srec
106 vmlinuz.srec
: vmlinuz
109 clean-files
:= $(objtree
)/vmlinuz.
*