On Sat, Nov 16, 2013 at 01:49:51PM +0100, Vladimir 'φ-coder/phcoder' Serbinenko 
wrote:
> On 16.11.2013 13:39, Leif Lindholm wrote:
> > -   str     r9, transition_space + 8
> You need to save r9. Otherwise GRUB will crash if compiled with clang.

Hmm, but this is a bug in clang in that case.

From an ABI perspective, grub_uboot_syscall is a veneer:
the only visible side effect it is permitted to have is to corrupt r12.

We need to additionally switch r8 between grub and u-boot copy because
u-boot uses it for its global data pointer, and lr because we need to
corrupt it to make u-boot return to this veneer to switch the r8 back
again.

This veneer should not touch anything else - so if we need to
temporarily work around a toolchain ABI bug, can we do this via an
ifdef and a config option?

/
    Leif

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to