]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/powerpc/powerpc64/setjmp.S
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc64 / setjmp.S
index e13f7b4e2b574552c535d053ecd7e78f3339c905..05b0c04c32b8a1d80d4b394e31b6ad364a29c38e 100644 (file)
@@ -1,6 +1,5 @@
-/* setjmp for PowerPC64.
-   Copyright (C) 1995, 1996, 1997, 1999, 2000, 2001, 2002
-       Free Software Foundation, Inc.
+/* AltiVec (new) version of setjmp for PowerPC.
+   Copyright (C) 1995-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
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <sysdep.h>
-#define _ASM
-#define _SETJMP_H
-#include <bits/setjmp.h>
-#include <bp-sym.h>
-#include <bp-asm.h>
-
-ENTRY (BP_SYM (__sigsetjmp))
-       CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
-___sigsetjmp:
-       std  r1,(JB_GPR1*8)(3)
-       mflr r0
-       std  r2,(JB_GPR2*8)(3)
-       std  r14,((JB_GPRS+0)*8)(3)
-       stfd fp14,((JB_FPRS+0)*8)(3)
-       std  r0,(JB_LR*8)(3)
-       std  r15,((JB_GPRS+1)*8)(3)
-       stfd fp15,((JB_FPRS+1)*8)(3)
-       mfcr r0
-       std  r16,((JB_GPRS+2)*8)(3)
-       stfd fp16,((JB_FPRS+2)*8)(3)
-       std  r0,(JB_CR*8)(3)
-       std  r17,((JB_GPRS+3)*8)(3)
-       stfd fp17,((JB_FPRS+3)*8)(3)
-       std  r18,((JB_GPRS+4)*8)(3)
-       stfd fp18,((JB_FPRS+4)*8)(3)
-       std  r19,((JB_GPRS+5)*8)(3)
-       stfd fp19,((JB_FPRS+5)*8)(3)
-       std  r20,((JB_GPRS+6)*8)(3)
-       stfd fp20,((JB_FPRS+6)*8)(3)
-       std  r21,((JB_GPRS+7)*8)(3)
-       stfd fp21,((JB_FPRS+7)*8)(3)
-       std  r22,((JB_GPRS+8)*8)(3)
-       stfd fp22,((JB_FPRS+8)*8)(3)
-       std  r23,((JB_GPRS+9)*8)(3)
-       stfd fp23,((JB_FPRS+9)*8)(3)
-       std  r24,((JB_GPRS+10)*8)(3)
-       stfd fp24,((JB_FPRS+10)*8)(3)
-       std  r25,((JB_GPRS+11)*8)(3)
-       stfd fp25,((JB_FPRS+11)*8)(3)
-       std  r26,((JB_GPRS+12)*8)(3)
-       stfd fp26,((JB_FPRS+12)*8)(3)
-       std  r27,((JB_GPRS+13)*8)(3)
-       stfd fp27,((JB_FPRS+13)*8)(3)
-       std  r28,((JB_GPRS+14)*8)(3)
-       stfd fp28,((JB_FPRS+14)*8)(3)
-       std  r29,((JB_GPRS+15)*8)(3)
-       stfd fp29,((JB_FPRS+15)*8)(3)
-       std  r30,((JB_GPRS+16)*8)(3)
-       stfd fp30,((JB_FPRS+16)*8)(3)
-       std  r31,((JB_GPRS+17)*8)(3)
-       stfd fp31,((JB_FPRS+17)*8)(3)
-       b JUMPTARGET (BP_SYM (__sigjmp_save))
-END (BP_SYM (__sigsetjmp))
-
-ENTRY (BP_SYM (_setjmp))
-       li r4,0                 /* Set second argument to 0.  */
-       b       ___sigsetjmp
-END (BP_SYM (_setjmp))
-
-ENTRY (BP_SYM (__setjmp))
-       li r4,1                 /* Set second argument to 1.  */
-       b       ___sigsetjmp
-END (BP_SYM (__setjmp))
-
-strong_alias (__setjmp, setjmp)
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <libc-symbols.h>
+#include <rtld-global-offsets.h>
+#include <shlib-compat.h>
+
+#if !IS_IN (libc)
+/* Build a non-versioned object for rtld-*.  */
+# define setjmp_symbol setjmp
+# define _setjmp_symbol _setjmp
+# define __sigsetjmp_symbol __sigsetjmp
+# define __sigjmp_save_symbol __sigjmp_save
+# include "setjmp-common.S"
+
+#else /* IS_IN (libc) */
+/* Build a versioned object for libc.  */
+versioned_symbol (libc, __vmxsetjmp, setjmp, GLIBC_2_3_4)
+versioned_symbol (libc, __vmx_setjmp, _setjmp, GLIBC_2_3_4)
+versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
+# define setjmp_symbol __vmxsetjmp
+# define _setjmp_symbol __vmx_setjmp
+# define __sigsetjmp_symbol __vmx__sigsetjmp
+# define __sigjmp_save_symbol __vmx__sigjmp_save
+# include "setjmp-common.S"
+strong_alias (__vmxsetjmp, __vmx__setjmp)
+strong_alias (__vmx__sigsetjmp, __setjmp)
+
+# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
+#  undef setjmp_symbol
+#  undef _setjmp_symbol
+#  undef __sigsetjmp_symbol
+#  undef __sigjmp_save_symbol
+#  undef JB_SIZE
+#  define __NO_VMX__
+compat_symbol (libc, __novmxsetjmp, setjmp, GLIBC_2_3)
+compat_symbol (libc, __novmx_setjmp,_setjmp, GLIBC_2_3);
+compat_symbol (libc, __novmx__sigsetjmp,__sigsetjmp, GLIBC_2_3)
+#  define setjmp_symbol __novmxsetjmp
+#  define _setjmp_symbol __novmx_setjmp
+#  define __sigsetjmp_symbol __novmx__sigsetjmp
+#  define __sigjmp_save_symbol __novmx__sigjmp_save
+#  include "setjmp-common.S"
+strong_alias (__novmxsetjmp, __novmx__setjmp)
+# endif
+#endif /* IS_IN (libc) */