grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] arm: fix u-boot port syscall interface va_arg handling (was


From: Leif Lindholm
Subject: Re: [PATCH] arm: fix u-boot port syscall interface va_arg handling (was Re: [PATCH] [ARM] Enable boot module for arm)
Date: Sat, 16 Nov 2013 14:00:10 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]