[PATCH 14/16] ARM: compile in image size and magic into barebox image
Marc Reilly
marc at cpdesign.com.au
Sun Apr 10 00:33:44 EDT 2011
Hi,
> 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 */
> );
> }
I like this, is there a way to include a version string/info also?
(The aim is to be able to derive the barebox version of an image from just
reading the file).
>
> 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
I don't understand this line. Did you mean something like:
#define barebox_image_size *((unsigned int *)_barebox_image_size)
Or am I missing something?
Cheers
Marc
More information about the barebox
mailing list