[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