mirror of
https://github.com/genesi/linux-legacy.git
synced 2026-07-20 23:57:34 +00:00
This bases on work done earlier by Lennert Buytenhek and Mark A. Greer. Compared to their approach zreladdr isn't guessed based on the pc register but the bootloader is expected to pass PHYS_OFFSET in r3. If that value doesn't look right (e.g. isn't aligned) it is guessed based on the value of sp. This should work for CONFIG_ZBOOT_ROM, too. To use it for your machine removing the definition of PHYS_OFFSET from <mach/memory.h> and selecting CONFIG_RUNTIME_PHYS_OFFSET should be enough. Cc: Lennert Buytenhek <buytenh@wantstofly.org> Cc: Steve Chen <schen@mvista.com> Cc: Mark A. Greer <mgreer@mvista.com> Cc: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
115 lines
2.7 KiB
Makefile
115 lines
2.7 KiB
Makefile
#
|
|
# linux/arch/arm/boot/compressed/Makefile
|
|
#
|
|
# create a compressed vmlinuz image from the original vmlinux
|
|
#
|
|
|
|
AFLAGS_head.o += -DTEXT_OFFSET=$(TEXT_OFFSET)
|
|
HEAD = head.o
|
|
OBJS = misc.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_L7200),y)
|
|
OBJS += head-l7200.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),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
|
|
|
|
#
|
|
# 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)/
|
|
|
|
targets := vmlinux vmlinux.lds piggy.gz piggy.o font.o font.c \
|
|
head.o misc.o $(OBJS)
|
|
|
|
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, INITRD_PHYS and PARAMS_PHYS to the decompressor via
|
|
# linker symbols. We only define initrd_phys and params_phys if the
|
|
# machine class defined the corresponding makefile variable.
|
|
LDFLAGS_vmlinux := --defsym zreladdr=$(ZRELADDR)
|
|
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
|
|
LDFLAGS_vmlinux += --be8
|
|
endif
|
|
ifneq ($(INITRD_PHYS),)
|
|
LDFLAGS_vmlinux += --defsym initrd_phys=$(INITRD_PHYS)
|
|
endif
|
|
ifneq ($(PARAMS_PHYS),)
|
|
LDFLAGS_vmlinux += --defsym params_phys=$(PARAMS_PHYS)
|
|
endif
|
|
LDFLAGS_vmlinux += -p --no-undefined -X \
|
|
$(shell $(CC) $(KBUILD_CFLAGS) --print-libgcc-file-name) -T
|
|
|
|
# Don't allow any static data in misc.o, which
|
|
# would otherwise mess up our GOT table
|
|
CFLAGS_misc.o := -Dstatic=
|
|
|
|
$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \
|
|
$(addprefix $(obj)/, $(OBJS)) FORCE
|
|
$(call if_changed,ld)
|
|
@:
|
|
|
|
$(obj)/piggy.gz: $(obj)/../Image FORCE
|
|
$(call if_changed,gzip)
|
|
|
|
$(obj)/piggy.o: $(obj)/piggy.gz FORCE
|
|
|
|
CFLAGS_font.o := -Dstatic=
|
|
|
|
$(obj)/font.c: $(FONTC)
|
|
$(call cmd,shipped)
|
|
|
|
$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile .config
|
|
@sed "$(SEDFLAGS)" < $< > $@
|