forked from Minki/linux
f45b114991
This allows a ROM-able zImage to be written to MMC and for SuperH Mobile ARM to boot directly from the MMCIF hardware block. This is achieved by the MaskROM loading the first portion of the image into MERAM and then jumping to it. This portion contains loader code which copies the entire image to SDRAM and jumps to it. From there the zImage boot code proceeds as normal, uncompressing the image into its final location and then jumping to it. Cc: Magnus Damm <magnus.damm@gmail.com> Russell, please consider merging this for 2.6.38. This patch depends on: * "mmc, sh: Move MMCIF_PROGRESS_* into sh_mmcif.h" which will be merged though Paul Mundt's rmobile sh-2.6. The absence of this patch will break the build if the (new) CONFIG_ZBOOT_ROM_MMCIF option is set. There are no subtle side-effects. v2: Addressed comments by Magnus Damm * Fix copyright in vrl4.c * Fix use of #define CONFIG_ZBOOT_ROM_MMCIF in mmcif-sh7372.c * Initialise LED GPIO lines in head-ap4evb.txt instead of mmcif-sh7372.c as this is considered board-specific. v3: Addressed comments made in person by Magnus Damm * Move mmcif_loader to be earlier in the image and reduce the number of blocks of boot program loaded by the MaskRom from 40 to 8 accordingly. * Move LED GPIO initialisation into mmcif_progress_init - This leaves the partner jet script unbloated Other * inline mmcif_update_progress so it is a static inline in a header file v4: * Use htole16() and htole32() in v4rl.c to ensure that the output is little endian v5: Addressed comments by Russell King * Simplify assembly code * Jump to code rather than an address <- bug fix * Use (void __iomem *) as appropriate Roll in mackerel support * This was previously a separate patch, only because of the order in which this code was developed Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
136 lines
3.2 KiB
Makefile
136 lines
3.2 KiB
Makefile
#
|
|
# linux/arch/arm/boot/compressed/Makefile
|
|
#
|
|
# create a compressed vmlinuz image from the original vmlinux
|
|
#
|
|
|
|
OBJS =
|
|
|
|
# Ensure that mmcif loader code appears early in the image
|
|
# to minimise that number of bocks that have to be read in
|
|
# order to load it.
|
|
ifeq ($(CONFIG_ZBOOT_ROM_MMCIF),y)
|
|
ifeq ($(CONFIG_ARCH_SH7372),y)
|
|
OBJS += mmcif-sh7372.o
|
|
endif
|
|
endif
|
|
|
|
AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET)
|
|
HEAD = head.o
|
|
OBJS += misc.o decompress.o
|
|
FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c
|
|
|
|
#
|
|
# Architecture dependencies
|
|
#
|
|
ifeq ($(CONFIG_ARCH_ACORN),y)
|
|
OBJS += ll_char_wr.o font.o
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ARCH_SHARK),y)
|
|
OBJS += head-shark.o ofw-shark.o
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ARCH_P720T),y)
|
|
# Borrow this code from SA1100
|
|
OBJS += head-sa1100.o
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ARCH_SA1100),y)
|
|
OBJS += head-sa1100.o
|
|
endif
|
|
|
|
ifeq ($(CONFIG_CPU_XSCALE),y)
|
|
OBJS += head-xscale.o
|
|
endif
|
|
|
|
ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y)
|
|
OBJS += head-sharpsl.o
|
|
endif
|
|
|
|
ifeq ($(CONFIG_CPU_ENDIAN_BE32),y)
|
|
ifeq ($(CONFIG_CPU_CP15),y)
|
|
OBJS += big-endian.o
|
|
else
|
|
# The endian should be set by h/w design.
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ARCH_SHMOBILE),y)
|
|
OBJS += head-shmobile.o
|
|
endif
|
|
|
|
#
|
|
# We now have a PIC decompressor implementation. Decompressors running
|
|
# from RAM should not define ZTEXTADDR. Decompressors running directly
|
|
# from ROM or Flash must define ZTEXTADDR (preferably via the config)
|
|
# FIXME: Previous assignment to ztextaddr-y is lost here. See SHARK
|
|
ifeq ($(CONFIG_ZBOOT_ROM),y)
|
|
ZTEXTADDR := $(CONFIG_ZBOOT_ROM_TEXT)
|
|
ZBSSADDR := $(CONFIG_ZBOOT_ROM_BSS)
|
|
else
|
|
ZTEXTADDR := 0
|
|
ZBSSADDR := ALIGN(4)
|
|
endif
|
|
|
|
SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/
|
|
|
|
suffix_$(CONFIG_KERNEL_GZIP) = gzip
|
|
suffix_$(CONFIG_KERNEL_LZO) = lzo
|
|
suffix_$(CONFIG_KERNEL_LZMA) = lzma
|
|
|
|
targets := vmlinux vmlinux.lds \
|
|
piggy.$(suffix_y) piggy.$(suffix_y).o \
|
|
font.o font.c head.o misc.o $(OBJS)
|
|
|
|
# Make sure files are removed during clean
|
|
extra-y += piggy.gzip piggy.lzo piggy.lzma lib1funcs.S
|
|
|
|
ifeq ($(CONFIG_FUNCTION_TRACER),y)
|
|
ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
|
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
|
|
endif
|
|
|
|
EXTRA_CFLAGS := -fpic -fno-builtin
|
|
EXTRA_AFLAGS := -Wa,-march=all
|
|
|
|
# Supply ZRELADDR to the decompressor via a linker symbol.
|
|
ifneq ($(CONFIG_AUTO_ZRELADDR),y)
|
|
LDFLAGS_vmlinux := --defsym zreladdr=$(ZRELADDR)
|
|
endif
|
|
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
|
|
LDFLAGS_vmlinux += --be8
|
|
endif
|
|
# ?
|
|
LDFLAGS_vmlinux += -p
|
|
# Report unresolved symbol references
|
|
LDFLAGS_vmlinux += --no-undefined
|
|
# Delete all temporary local symbols
|
|
LDFLAGS_vmlinux += -X
|
|
# Next argument is a linker script
|
|
LDFLAGS_vmlinux += -T
|
|
|
|
# For __aeabi_uidivmod
|
|
lib1funcs = $(obj)/lib1funcs.o
|
|
|
|
$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE
|
|
$(call cmd,shipped)
|
|
|
|
$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
|
|
$(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE
|
|
$(call if_changed,ld)
|
|
@:
|
|
|
|
$(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE
|
|
$(call if_changed,$(suffix_y))
|
|
|
|
$(obj)/piggy.$(suffix_y).o: $(obj)/piggy.$(suffix_y) FORCE
|
|
|
|
CFLAGS_font.o := -Dstatic=
|
|
|
|
$(obj)/font.c: $(FONTC)
|
|
$(call cmd,shipped)
|
|
|
|
$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile $(KCONFIG_CONFIG)
|
|
@sed "$(SEDFLAGS)" < $< > $@
|