[LinuxBIOS] initram / xip issue

Jordan Crouse jordan.crouse at amd.com
Sun Oct 7 15:39:31 CEST 2007


On 07/10/07 04:52 +0200, Stefan Reinauer wrote:
> Ok, here's my latest patch that makes initram callbacks to stage0 work
> in v3. It's not all that pretty, but it is the least ugly thing I could
> find.
> 
> Stefan
> 
> -- 
> coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
>       Tel.: +49 761 7668825 • Fax: +49 761 7664613
> Email: info at coresystems.dehttp://www.coresystems.de/
> Registergericht: Amtsgericht Freiburg • HRB 7656
> Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866

> This patch against LinuxBIOSv3 enables calls from initram (freely located XIP
> code) to stage0 (fixed location code) by forcing gcc to create an absolute call
> instruction to stage0. 
> 
> Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
> 
> Index: include/console.h
> ===================================================================
> --- include/console.h	(revision 503)
> +++ include/console.h	(working copy)
> @@ -46,7 +46,13 @@
>  };
>  
>  // 
> +#ifndef XIP

I really don't like the idea of singling out XIP segements.  I vote we
changed this to SHARED, and do this for all segments, regardless of where
they live.  The code impact should be minimal.

>  int printk(int msg_level, const char *fmt, ...) 
>  	__attribute__((format (printf, 2, 3)));
> +#else
> +int stage0printk(int msg_level, const char *fmt, ...) 
> +	__attribute__((format (printf, 2, 3)));
> +int (*printk)(int msg_level, const char *fmt, ...) = stage0printk;
> +#endif

There has got to be a way that we can turn this into a general
purpose macro to make it easy for developers to mark new functions
as shared without understanding whats happening above

> Index: arch/x86/ldscript.ld
> ===================================================================
> --- arch/x86/ldscript.ld	(revision 503)
> +++ arch/x86/ldscript.ld	(working copy)
> @@ -33,10 +33,13 @@
>  	.stage0_1 . : {
>  		_stage0_1 = .;
>  		*(.text);
> +		*(.text.*)
> +		*(.rodata)
> +		*(.rodata.*)
> +		*(.got)
> +		*(.got.*)

How much size does the GOT add?

Jordan
-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.






More information about the coreboot mailing list