This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: e500 port: setjmp/longjmp


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]