diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2011-04-04 10:51:47 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-05-06 08:53:26 +0200 |
commit | 64476d2177a53228319c4ab5b99cfb66ec8cc365 (patch) | |
tree | e61e6b30d8df45c2972f1a2abcdb5b879155ca44 | |
parent | c1bcb052ddf55c9181e0ce65962a793584d9154e (diff) | |
download | barebox-64476d2177a53228319c4ab5b99cfb66ec8cc365.tar.gz barebox-64476d2177a53228319c4ab5b99cfb66ec8cc365.tar.xz |
ARM: compile in image size and magic into barebox image
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@pengutronix.de>
-rw-r--r-- | arch/arm/cpu/start.c | 6 | ||||
-rw-r--r-- | arch/arm/lib/barebox.lds.S | 1 | ||||
-rw-r--r-- | 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 1f8eed8a..f20ce74a 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -48,6 +48,12 @@ void __naked __section(.text_entry) exception_vectors(void) "1: bne 1b\n" /* irq (interrupt) */ "1: bne 1b\n" /* fiq (fast interrupt) */ #endif + ".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 7683f739..81a91236 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 c5d60a9d..1f48fb8c 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_ */ |