e500 port: setjmp/longjmp
Ryan S. Arnold
ryan.arnold@gmail.com
Wed Sep 18 13:38:00 GMT 2013
On Tue, Sep 17, 2013 at 4:16 PM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> This patch implements e500 support in the soft-float powerpc32
> setjmp/longjmp. Like the old e500 port, it stores the 64-bit
> registers in the area used for FPRs for hard-float and previously not
> used at all for soft-float; unlike that old port, it doesn't duplicate
> the storage of the low parts by putting them in the GPR save area
> (setjmp and longjmp always come from the same libc build; the jmp_buf
> layout is not a public ABI so there is no need for such duplication).
> As discussed in
> <https://sourceware.org/ml/libc-alpha/2013-09/msg00485.html>, this is
> entirely compile-time conditional rather than doing anything
> runtime-conditional using HWCAP bits.
>
> Tested with a build for e500.
>
> 2013-09-17 Joseph Myers <joseph@codesourcery.com>
>
> * sysdeps/powerpc/powerpc32/__longjmp-common.S (LOAD_GP): Define
> macro conditional on [__SPE__ || (__NO_FPRS__ && !_SOFT_FLOAT)].
> (__longjmp): Use LOAD_GP to load saved GPRs.
> * sysdeps/powerpc/powerpc32/setjmp-common.S (SAVE_GP): Define
> macro conditional on [__SPE__ || (__NO_FPRS__ && !_SOFT_FLOAT)].
> (__sigsetjmp): Use SAVE_GP to save GPRs.
I'm fine with this patch.
Ryan S. Arnold
More information about the Libc-alpha
mailing list