blob: c52669a054d6373b2a685ce5d8e2b3e0c675b04a [file] [log] [blame]
# This is far from simple, but I couldn't think of a good name. This is
# for making the 'zImage' or 'zImage.initrd' on a number of targets.
#
# Author: Tom Rini <trini@mvista.com>
#
# 2001-2002 (c) MontaVista, Software, Inc. This file is licensed under
# the terms of the GNU General Public License version 2. This program
# is licensed "as is" without any warranty of any kind, whether express
# or implied.
#
# Notes:
# (1) All machines must set the END variable to the suffix of the preferred
# final image (i.e. would be copied in 'make znetboot'.
# (2) For machine targets which use the mktree program you can optionally
# set ENTRYPOINT which the image should be loaded at. The optimal setting
# for ENTRYPOINT is the link address.
USE_STANDARD_AS_RULE := true
# Normally, we use the 'misc-simple.c' file for decompress_kernel and
# whatnot. Sometimes we need to override this however.
MISC := ../common/misc-simple.o
ifeq ($(CONFIG_EMBEDDEDBOOT),y)
ZIMAGE := zImage-EMBEDDED
ZIMAGEINITRD := zImage.initrd-EMBEDDED
MISC := misc-embedded.o
END := embedded
endif
ifeq ($(CONFIG_IBM_OPENBIOS),y)
ZIMAGE := zImage-TREE
ZIMAGEINITRD := zImage.initrd-TREE
END := treeboot
TFTPIMAGE := /tftpboot/zImage.embedded
MISC := misc-embedded.o
endif
ifeq ($(CONFIG_EBONY),y)
ZIMAGE := zImage-TREE
ZIMAGEINITRD := zImage.initrd-TREE
END := ebony
ENTRYPOINT := 0x00800000
EXTRA := misc-44x.o
endif
ifeq ($(CONFIG_OCOTEA),y)
ZIMAGE := zImage-TREE
ZIMAGEINITRD := zImage.initrd-TREE
END := ocotea
ENTRYPOINT := 0x00800000
EXTRA := misc-44x.o
endif
ifeq ($(CONFIG_GEMINI),y)
ZIMAGE := zImage-SMON
ZIMAGEINITRD := zImage.initrd-SMON
END := gemini
endif
# kbuild-2.4 'feature', only one of these will ever by 'y' at a time.
# The rest will be unset.
ifeq ($(CONFIG_LOPEC)$(CONFIG_PPLUS)$(CONFIG_PRPMC750),y)
ZIMAGE := zImage-PPLUS
ZIMAGEINITRD := zImage.initrd-PPLUS
EXTRA := ../common/mpc10x_memory.o
TFTPIMAGE := /tftpboot/zImage.pplus
END := pplus
endif
ifeq ($(CONFIG_PPLUS),y)
EXTRA := legacy.o
endif
ifeq ($(CONFIG_PAL4),y)
ZIMAGE := zImage-PAL4
ZIMAGEINITRD := zImage.initrd-PAL4
END := pal4
endif
ifeq ($(CONFIG_SANDPOINT),y)
ZIMAGE := zImage-SP
ZIMAGEINITRD := zImage.initrd-SP
CACHEFLAG := -include clear.S
TFTPIMAGE := /tftpboot/zImage.sandpoint
END := sandpoint
endif
ifeq ($(CONFIG_SPRUCE),y)
ZIMAGE := zImage-TREE
ZIMAGEINITRD := zImage.initrd-TREE
ENTRYPOINT := 0x00800000
MISC := misc-spruce.o
END := spruce
endif
TFTPIMAGE ?= /tftpboot/zImage.$(END)
ifeq ($(CONFIG_SMP),y)
TFTPIMAGE += .smp
endif
# Setup a default address to put ourselves, change it as needed.
LD_ARGS = -T ../ld.script -Ttext 0x00800000 -Bstatic
ifdef CONFIG_8xx
LD_ARGS := -T ../ld.script -Ttext 0x00180000 -Bstatic
endif
ifeq ($(CONFIG_8260)$(CONFIG_40x),y)
LD_ARGS := -T ../ld.script -Ttext 0x00400000 -Bstatic
endif
OBJCOPY_ARGS := -O elf32-powerpc
# head.o and ../common/relocate.o must be at the start.
obj-y := head.o ../common/relocate.o $(EXTRA) \
$(MISC) ../common/misc-common.o \
../common/string.o ../common/util.o \
../common/serial_stub.o
obj-$(CONFIG_40x) += embed_config.o
obj-$(CONFIG_8xx) += embed_config.o
obj-$(CONFIG_8260) += embed_config.o
obj-$(CONFIG_BSEIP) += iic.o
obj-$(CONFIG_MBX) += iic.o
obj-$(CONFIG_RPXCLASSIC) += iic.o
obj-$(CONFIG_RPXLITE) += iic.o
# Different boards need different serial implementations.
ifeq ($(CONFIG_SERIAL_CONSOLE),y)
obj-$(CONFIG_8xx) += m8xx_tty.o
obj-$(CONFIG_8260) += m8260_tty.o
obj-$(CONFIG_SERIAL) += ../common/ns16550.o
endif
LIBS := ../lib/zlib.a
# Tools
MKBUGBOOT := ../utils/mkbugboot
MKPREP := ../utils/mkprep
MKTREE := ../utils/mktree
zvmlinux: $(obj-y) $(LIBS) ../ld.script ../images/vmlinux.gz ../common/dummy.o
$(OBJCOPY) $(OBJCOPY_ARGS) \
--add-section=.image=../images/vmlinux.gz \
--set-section-flags=.image=contents,alloc,load,readonly,data \
../common/dummy.o image.o
$(LD) $(LD_ARGS) -o $@ $(obj-y) image.o $(LIBS)
$(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R .comment -R .stab -R .stabstr \
-R .ramdisk -R .sysmap
zvmlinux.initrd: $(obj-y) $(LIBS) ../ld.script ../images/vmlinux.gz \
../common/dummy.o
$(OBJCOPY) $(OBJCOPY_ARGS) \
--add-section=.ramdisk=../images/ramdisk.image.gz \
--set-section-flags=.ramdisk=contents,alloc,load,readonly,data \
--add-section=.image=../images/vmlinux.gz \
--set-section-flags=.image=contents,alloc,load,readonly,data \
../common/dummy.o image.o
$(LD) $(LD_ARGS) -o $@ $(obj-y) image.o $(LIBS)
$(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R .comment -R .stab -R .stabstr \
-R .sysmap
# Sort-of dummy rules, that let us format the image we want.
zImage: $(ZIMAGE)
rm -f zvmlinux
zImage.initrd: $(ZIMAGEINITRD)
rm -f zvmlinux.initrd
znetboot: zImage
cp ../images/zImage.$(END) $(TFTPIMAGE)
znetboot.initrd: zImage.initrd
cp ../images/zImage.initrd.$(END) $(TFTPIMAGE)
zImage-EMBEDDED: zvmlinux
mv zvmlinux ../images/zImage.$(END)
zImage.initrd-EMBEDDED: zvmlinux.initrd
mv zvmlinux.initrd ../images/zImage.initrd.$(END)
zImage-PAL4: zvmlinux
mv zvmlinux ../images/zImage.$(END)
zImage.initrd-PAL4: zvmlinux.initrd
mv zvmlinux.initrd ../images/zImage.initrd.$(END)
zImage-PPLUS: zvmlinux $(MKPREP) $(MKBUGBOOT)
$(MKPREP) -pbp zvmlinux ../images/zImage.pplus
$(MKBUGBOOT) zvmlinux ../images/zImage.bugboot
zImage.initrd-PPLUS: zvmlinux.initrd $(MKPREP) $(MKBUGBOOT)
$(MKPREP) -pbp zvmlinux.initrd ../images/zImage.initrd.pplus
$(MKBUGBOOT) zvmlinux.initrd ../images/zImage.initrd.bugboot
zImage-SP: zvmlinux
mv zvmlinux ../images/zImage.sandpoint
zImage.initrd-SP: zvmlinux.initrd
mv zvmlinux.initrd ../images/zImage.initrd.sandpoint
zImage-SMON: zvmlinux
dd if=zvmlinux of=../images/zImage.$(END) skip=64 bs=1k
zImage.initrd-SMON: zvmlinux.initrd
dd if=zvmlinux.initrd of=../images/zImage.initrd.$(END) skip=64 bs=1k
zImage-TREE: zvmlinux
$(MKTREE) zvmlinux ../images/zImage.$(END) $(ENTRYPOINT)
zImage.initrd-TREE: zvmlinux.initrd
$(MKTREE) zvmlinux.initrd ../images/zImage.initrd.$(END) $(ENTRYPOINT)
include $(TOPDIR)/Rules.make