/* Save current context and install the given one.
- Copyright (C) 2002-2015 Free Software Foundation, Inc.
+ Copyright (C) 2002-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
cmpdi r0,0
bne L(nv_do_sigret)
+ ld r8,.LC__dl_hwcap@toc(r2)
# ifdef SHARED
/* Load _rtld-global._dl_hwcap. */
ld r8,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r8)
lfd fp0,(SIGCONTEXT_FP_REGS+(32*8))(r31)
lfd fp31,(SIGCONTEXT_FP_REGS+(PT_R31*8))(r31)
lfd fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r31)
+
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
- mtfsf 0xff,fp0,1,0
-# else
.machine push
.machine "power6"
+
+ mtfsf 0xff,fp0,1,0
+
+ .machine pop
+# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r8,PPC_FEATURE_HAS_DFP
beq 5f
- /* Use the extended four-operand version of the mtfsf insn. */
+
+ .machine push
+ .machine "power6"
+
mtfsf 0xff,fp0,1,0
+
+ .machine pop
+
b 6f
/* Continue to operate on the FPSCR as if it were 32-bits. */
5:
mtfsf 0xff,fp0
6:
- .machine pop
#endif /* _ARCH_PWR6 */
+
lfd fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r31)
lfd fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r31)
lfd fp27,(SIGCONTEXT_FP_REGS+(PT_R27*8))(r31)
lfd fp0,(SIGCONTEXT_FP_REGS+(32*8))(r31)
lfd fp31,(SIGCONTEXT_FP_REGS+(PT_R31*8))(r31)
lfd fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r31)
+
# ifdef _ARCH_PWR6
/* Use the extended four-operand version of the mtfsf insn. */
- mtfsf 0xff,fp0,1,0
-# else
.machine push
.machine "power6"
+
+ mtfsf 0xff,fp0,1,0
+
+ .machine pop
+# else
/* Availability of DFP indicates a 64-bit FPSCR. */
andi. r6,r8,PPC_FEATURE_HAS_DFP
beq 7f
- /* Use the extended four-operand version of the mtfsf insn. */
+
+ .machine push
+ .machine "power6"
+
mtfsf 0xff,fp0,1,0
+
+ .machine pop
+
b 8f
/* Continue to operate on the FPSCR as if it were 32-bits. */
7:
mtfsf 0xff,fp0
8:
- .machine pop
#endif /* _ARCH_PWR6 */
+
lfd fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r31)
lfd fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r31)
lfd fp27,(SIGCONTEXT_FP_REGS+(PT_R27*8))(r31)