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 <s.hauer@xxxxxxxxxxxxxx> --- 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 736e5f0..e0bae70 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 dac6571..d401164 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 0000000..4e6a2e5 --- /dev/null +++ b/arch/arm/mach-ep93xx/header.c @@ -0,0 +1,8 @@ +#include <common.h> +#include <linux/compiler.h> +#include <asm/barebox-arm-head.h> + +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 0000000..74c4662 --- /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 e853ca1..b2bd19e 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 <mach/barebox.lds.h> #endif -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox