[coreboot] Multiboot

Jordan Crouse jordan.crouse at amd.com
Fri Sep 19 03:51:41 CEST 2008


On 19/09/08 01:12 +0200, Carl-Daniel Hailfinger wrote:
> On 18.09.2008 23:59, Carl-Daniel Hailfinger wrote:
> > On 18.09.2008 22:09, Robert Millan wrote:
> >   
> >> --- arch/x86/stage1.c	(revision 867)
> >> +++ arch/x86/stage1.c	(working copy)
> >> @@ -139,6 +140,14 @@
> >>  }
> >>  #endif /* CONFIG_PAYLOAD_ELF_LOADER */
> >>  
> >> +
> >> +int run_address_multiboot(void *f)
> >> +{
> >> +	int ret;
> >> +	__asm__ __volatile__ ("call *%3" : "=a" (ret) : "a" (MB_MAGIC2), "b" (0xf0000), "c" (f));
> >> +	return ret;
> >> +}
> >> +
> >>   
> >>     
> >
> > The function above belongs in multiboot.c
> >   
> 
> I forgot to mention that the clobber list is incomplete, possibly
> leading to corruption if a payload returns.

Lets be honest with ourselves, none of our code is capable of processing
the return of a payload.  Complaining about this is falling out of an
airplane and on the way down telling the other guy that he should be 
wearing a helmet.

Technically, we should be saving and then restoring the kitchen sink
when we come back - something that isn't practical to do in a clobber list.
Yes, folks, sometimes assembly can be useful and this is one of those times.

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





More information about the coreboot mailing list