summaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc32/fpu/setjmp-common.S')
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/setjmp-common.S19
1 files changed, 13 insertions, 6 deletions
diff --git a/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S b/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
index e0c0606da4..cf3f215f2d 100644
--- a/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
@@ -74,20 +74,27 @@ ENTRY (BP_SYM (__sigsetjmp))
stw r31,((JB_GPRS+17)*4)(3)
stfd fp31,((JB_FPRS+17*2)*4)(3)
#ifndef __NO_VMX__
-#ifdef PIC
+# ifdef PIC
mflr r6
+# ifdef HAVE_ASM_PPC_REL16
+ bcl 20,31,1f
+1: mflr r5
+ addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha
+ addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
+# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r5
-#ifdef SHARED
+# endif
+# ifdef SHARED
lwz r5,_rtld_global_ro@got(r5)
mtlr r6
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
-#else
- lwz r5,_rtld_global_ro@got(r5)
+# else
+ lwz r5,_dl_hwcap@got(r5)
mtlr r6
lwz r5,0(r5)
-#endif
-#else
+# endif
+# else
lis r5,_dl_hwcap@ha
lwz r5,_dl_hwcap@l(r5)
#endif