[PATCH 14/16] ARM: compile in image size and magic into barebox image

Sascha Hauer s.hauer at pengutronix.de
Fri Apr 8 10:37:00 EDT 2011


This is useful to detect a barebox image and to be able
to copy only the image size if barebox is stored on
raw partitions which are bigger than the image.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 arch/arm/cpu/start.c           |    6 ++++++
 arch/arm/lib/barebox.lds.S     |    1 +
 include/asm-generic/sections.h |    3 +++
 3 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c
index e0fb712..ddb65e8 100644
--- a/arch/arm/cpu/start.c
+++ b/arch/arm/cpu/start.c
@@ -38,6 +38,12 @@ void __naked __section(.text_entry) exception_vectors(void)
 		"ldr pc, =not_used\n"			/* (reserved) */
 		"ldr pc, =irq\n"			/* irq (interrupt) */
 		"ldr pc, =fiq\n"			/* fiq (fast interrupt) */
+		".word 0x65726162\n"			/* 'BARE' */
+		".word 0x00786f62\n"			/* 'BOX' */
+		".word _text\n"				/* text base. If copied there,
+							 * barebox can skip relocation
+							 */
+		".word _barebox_image_size\n"		/* image size to copy */
 	);
 }
 
diff --git a/arch/arm/lib/barebox.lds.S b/arch/arm/lib/barebox.lds.S
index 7683f73..81a9123 100644
--- a/arch/arm/lib/barebox.lds.S
+++ b/arch/arm/lib/barebox.lds.S
@@ -93,4 +93,5 @@ SECTIONS
 	.bss : { *(.bss*) }
 	__bss_stop = .;
 	_end = .;
+	_barebox_image_size = __bss_start - _text;
 }
diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h
index c5d60a9..1f48fb8 100644
--- a/include/asm-generic/sections.h
+++ b/include/asm-generic/sections.h
@@ -4,5 +4,8 @@
 extern char _text[], _stext[], _etext[];
 extern char __bss_start[], __bss_stop[];
 extern char _end[];
+extern void *_barebox_image_size;
+
+#define barebox_image_size	(unsigned int)&_barebox_image_size
 
 #endif /* _ASM_GENERIC_SECTIONS_H_ */
-- 
1.7.2.3




More information about the barebox mailing list