From 218dffea800754dcbda323da1c99c7d90c9b9062 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Sun, 8 Jul 2012 16:44:34 +0200 Subject: [PATCH] ARM ep93xx: Get rid of special handling in linker file The ep93xx needs a special value at offset 0x1000. Rather than do special handling in the linker file add aa header section as done on i.MX. Signed-off-by: Sascha Hauer --- arch/arm/lib/barebox.lds.S | 5 ----- arch/arm/mach-ep93xx/Makefile | 2 +- arch/arm/mach-ep93xx/header.c | 8 ++++++++ arch/arm/mach-ep93xx/include/mach/barebox.lds.h | 9 +++++++++ include/asm-generic/barebox.lds.h | 3 ++- 5 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 arch/arm/mach-ep93xx/header.c create mode 100644 arch/arm/mach-ep93xx/include/mach/barebox.lds.h diff --git a/arch/arm/lib/barebox.lds.S b/arch/arm/lib/barebox.lds.S index 736e5f02e..e0bae70f4 100644 --- a/arch/arm/lib/barebox.lds.S +++ b/arch/arm/lib/barebox.lds.S @@ -41,11 +41,6 @@ SECTIONS *(.text_entry*) __ll_return = .; *(.text_ll_return*) -#ifdef CONFIG_ARCH_EP93XX - /* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */ - . = 0x1000; - LONG(0x53555243) /* 'CRUS' */ -#endif __bare_init_start = .; *(.text_bare_init*) __bare_init_end = .; diff --git a/arch/arm/mach-ep93xx/Makefile b/arch/arm/mach-ep93xx/Makefile index dac657178..d401164e4 100644 --- a/arch/arm/mach-ep93xx/Makefile +++ b/arch/arm/mach-ep93xx/Makefile @@ -1,3 +1,3 @@ -obj-y += clocksource.o gpio.o led.o +obj-y += clocksource.o gpio.o led.o header.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += lowlevel_init.o diff --git a/arch/arm/mach-ep93xx/header.c b/arch/arm/mach-ep93xx/header.c new file mode 100644 index 000000000..4e6a2e57c --- /dev/null +++ b/arch/arm/mach-ep93xx/header.c @@ -0,0 +1,8 @@ +#include +#include +#include + +void __naked __section(.flash_header_start) go(void) +{ + barebox_arm_head(); +} diff --git a/arch/arm/mach-ep93xx/include/mach/barebox.lds.h b/arch/arm/mach-ep93xx/include/mach/barebox.lds.h new file mode 100644 index 000000000..74c4662a5 --- /dev/null +++ b/arch/arm/mach-ep93xx/include/mach/barebox.lds.h @@ -0,0 +1,9 @@ + +/* the EP93xx expects to find the pattern 'CRUS' at 0x1000 */ + +#define PRE_IMAGE \ + .pre_image : { \ + KEEP(*(.flash_header_start*)) \ + . = 0x1000; \ + LONG(0x53555243) /* 'CRUS' */ \ + } diff --git a/include/asm-generic/barebox.lds.h b/include/asm-generic/barebox.lds.h index e853ca1ca..b2bd19ef2 100644 --- a/include/asm-generic/barebox.lds.h +++ b/include/asm-generic/barebox.lds.h @@ -4,7 +4,8 @@ defined CONFIG_ARCH_IMX51 || \ defined CONFIG_ARCH_IMX53 || \ defined CONFIG_ARCH_IMX6 || \ - defined CONFIG_X86 + defined CONFIG_X86 || \ + defined CONFIG_ARCH_EP93XX #include #endif