[PATCH 6/9] ARM ep93xx: Get rid of special handling in linker file

Sascha Hauer s.hauer at pengutronix.de
Thu Jul 19 04:12:59 EDT 2012


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 at pengutronix.de>
---
 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




More information about the barebox mailing list