mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h [ASSEMBLER]:
Define PTR_DEMANGLE2. * sysdeps/powerpc/powerpc32/setjmp-common.S [PTR_MANGLE]: Also mangle r1. * sysdeps/powerpc/powerpc32/__longjmp-common.S [PTR_DEMANGLE]: Also demangle r1. * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S [PTR_MANGLE]: Mangle r0 and r1. * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S [PTR_DEMANGLE]: Demangle r0 and r1.
This commit is contained in:
parent
8a422e9efd
commit
4e54d7e476
11
ChangeLog
11
ChangeLog
@ -1,5 +1,16 @@
|
|||||||
2005-12-29 Ulrich Drepper <drepper@redhat.com>
|
2005-12-29 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h [ASSEMBLER]:
|
||||||
|
Define PTR_DEMANGLE2.
|
||||||
|
* sysdeps/powerpc/powerpc32/setjmp-common.S [PTR_MANGLE]: Also
|
||||||
|
mangle r1.
|
||||||
|
* sysdeps/powerpc/powerpc32/__longjmp-common.S [PTR_DEMANGLE]: Also
|
||||||
|
demangle r1.
|
||||||
|
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S [PTR_MANGLE]: Mangle
|
||||||
|
r0 and r1.
|
||||||
|
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S [PTR_DEMANGLE]:
|
||||||
|
Demangle r0 and r1.
|
||||||
|
|
||||||
* sysdeps/powerpc/powerpc64/setjmp-common.S [PTR_MANGLE]: Also
|
* sysdeps/powerpc/powerpc64/setjmp-common.S [PTR_MANGLE]: Also
|
||||||
mangle r1.
|
mangle r1.
|
||||||
* sysdeps/powerpc/powerpc64/__longjmp-common.S [PTR_DEMANGLE]: Also
|
* sysdeps/powerpc/powerpc64/__longjmp-common.S [PTR_DEMANGLE]: Also
|
||||||
|
@ -43,6 +43,7 @@ ENTRY (BP_SYM (__longjmp))
|
|||||||
lwz r20,((JB_GPRS+6)*4)(r3)
|
lwz r20,((JB_GPRS+6)*4)(r3)
|
||||||
#ifdef PTR_DEMANGLE
|
#ifdef PTR_DEMANGLE
|
||||||
PTR_DEMANGLE (r0, r25)
|
PTR_DEMANGLE (r0, r25)
|
||||||
|
PTR_DEMANGLE2 (r1, r25)
|
||||||
#endif
|
#endif
|
||||||
mtlr r0
|
mtlr r0
|
||||||
lwz r21,((JB_GPRS+7)*4)(r3)
|
lwz r21,((JB_GPRS+7)*4)(r3)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* longjmp for PowerPC.
|
/* longjmp for PowerPC.
|
||||||
Copyright (C) 1995-99, 2000, 2003, 2004 Free Software Foundation, Inc.
|
Copyright (C) 1995-99, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -128,6 +128,10 @@ L(no_vmx):
|
|||||||
lfd fp19,((JB_FPRS+5*2)*4)(r3)
|
lfd fp19,((JB_FPRS+5*2)*4)(r3)
|
||||||
lwz r20,((JB_GPRS+6)*4)(r3)
|
lwz r20,((JB_GPRS+6)*4)(r3)
|
||||||
lfd fp20,((JB_FPRS+6*2)*4)(r3)
|
lfd fp20,((JB_FPRS+6*2)*4)(r3)
|
||||||
|
#ifdef PTR_DEMANGLE
|
||||||
|
PTR_DEMANGLE (r0, r25)
|
||||||
|
PTR_DEMANGLE2 (r1, r25)
|
||||||
|
#endif
|
||||||
mtlr r0
|
mtlr r0
|
||||||
lwz r21,((JB_GPRS+7)*4)(r3)
|
lwz r21,((JB_GPRS+7)*4)(r3)
|
||||||
lfd fp21,((JB_FPRS+7*2)*4)(r3)
|
lfd fp21,((JB_FPRS+7*2)*4)(r3)
|
||||||
|
@ -32,10 +32,19 @@
|
|||||||
ENTRY (BP_SYM (__sigsetjmp))
|
ENTRY (BP_SYM (__sigsetjmp))
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
||||||
|
|
||||||
|
#ifdef PTR_MANGLE
|
||||||
|
mr r5,r1
|
||||||
|
PTR_MANGLE(r5, r10)
|
||||||
|
stw r5,(JB_GPR1*4)(3)
|
||||||
|
#else
|
||||||
stw r1,(JB_GPR1*4)(3)
|
stw r1,(JB_GPR1*4)(3)
|
||||||
|
#endif
|
||||||
mflr r0
|
mflr r0
|
||||||
stw r14,((JB_GPRS+0)*4)(3)
|
stw r14,((JB_GPRS+0)*4)(3)
|
||||||
stfd fp14,((JB_FPRS+0*2)*4)(3)
|
stfd fp14,((JB_FPRS+0*2)*4)(3)
|
||||||
|
#ifdef PTR_MANGLE
|
||||||
|
PTR_MANGLE (r0, r10)
|
||||||
|
#endif
|
||||||
stw r0,(JB_LR*4)(3)
|
stw r0,(JB_LR*4)(3)
|
||||||
stw r15,((JB_GPRS+1)*4)(3)
|
stw r15,((JB_GPRS+1)*4)(3)
|
||||||
stfd fp15,((JB_FPRS+1*2)*4)(3)
|
stfd fp15,((JB_FPRS+1*2)*4)(3)
|
||||||
|
@ -33,7 +33,13 @@
|
|||||||
ENTRY (BP_SYM (__sigsetjmp))
|
ENTRY (BP_SYM (__sigsetjmp))
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
||||||
|
|
||||||
|
#ifdef PTR_MANGLE
|
||||||
|
mr r5,r1
|
||||||
|
PTR_MANGLE(r5, r10)
|
||||||
|
stw r5,(JB_GPR1*4)(3)
|
||||||
|
#else
|
||||||
stw r1,(JB_GPR1*4)(3)
|
stw r1,(JB_GPR1*4)(3)
|
||||||
|
#endif
|
||||||
mflr r0
|
mflr r0
|
||||||
stw r14,((JB_GPRS+0)*4)(3)
|
stw r14,((JB_GPRS+0)*4)(3)
|
||||||
#ifdef PTR_MANGLE
|
#ifdef PTR_MANGLE
|
||||||
|
@ -46,7 +46,13 @@ ENTRY (BP_SYM (__sigsetjmp))
|
|||||||
.hidden JUMPTARGET(GLUE(__sigsetjmp,_ent))
|
.hidden JUMPTARGET(GLUE(__sigsetjmp,_ent))
|
||||||
JUMPTARGET(GLUE(__sigsetjmp,_ent)):
|
JUMPTARGET(GLUE(__sigsetjmp,_ent)):
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
||||||
|
#ifdef PTR_MANGLE
|
||||||
|
mr r5, r1
|
||||||
|
PTR_MANGLE (r5, r10)
|
||||||
|
std r5,(JB_GPR1*8)(3)
|
||||||
|
#else
|
||||||
std r1,(JB_GPR1*8)(3)
|
std r1,(JB_GPR1*8)(3)
|
||||||
|
#endif
|
||||||
mflr r0
|
mflr r0
|
||||||
#if defined SHARED && !defined IS_IN_rtld
|
#if defined SHARED && !defined IS_IN_rtld
|
||||||
ld r5,40(r1) /* Retrieve the callers TOC. */
|
ld r5,40(r1) /* Retrieve the callers TOC. */
|
||||||
|
@ -181,6 +181,8 @@
|
|||||||
lwz tmpreg,POINTER_GUARD(r2); \
|
lwz tmpreg,POINTER_GUARD(r2); \
|
||||||
xor reg,tmpreg,reg
|
xor reg,tmpreg,reg
|
||||||
# define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
|
# define PTR_DEMANGLE(reg, tmpreg) PTR_MANGLE (reg, tmpreg)
|
||||||
|
# define PTR_DEMANGLE2(reg, tmpreg) \
|
||||||
|
xor reg,tmpreg,reg
|
||||||
# else
|
# else
|
||||||
# define PTR_MANGLE(var) \
|
# define PTR_MANGLE(var) \
|
||||||
(var) = (__typeof (var)) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
|
(var) = (__typeof (var)) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())
|
||||||
|
Loading…
Reference in New Issue
Block a user