]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/unix/sysv/linux/mips/getcontext.S
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / sysdeps / unix / sysv / linux / mips / getcontext.S
index 1e0a2776cc5e5c62c45ffccff44aaeea7e6bc538..365ffa8e9ecd3acb8f676f56381c96bd9205a7cc 100644 (file)
@@ -1,5 +1,5 @@
 /* Save current context.
-   Copyright (C) 2009-2014 Free Software Foundation, Inc.
+   Copyright (C) 2009-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
 
@@ -15,7 +15,7 @@
 
    You should have received a copy of the GNU Lesser General Public
    License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
+   <https://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
 #include <sys/asm.h>
@@ -38,6 +38,12 @@ MASK = 0x10000000
 #endif
 FRAMESZ = ((LOCALSZ * SZREG) + ALSZ) & ALMASK
 GPOFF = FRAMESZ - (1 * SZREG)
+MCONTEXT_GREGSZ = 8
+#if _MIPS_SIM == _ABIO32 && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+MCONTEXT_GREGOFF = 4
+#else
+MCONTEXT_GREGOFF = 0
+#endif
 
 NESTED (__getcontext, FRAMESZ, ra)
        .mask   MASK, 0
@@ -72,25 +78,21 @@ NESTED (__getcontext, FRAMESZ, ra)
        .set    at
 #endif
 
-       /* Store a magic flag.  */
-       li      v1, 1
-       REG_S   v1, (0 * SZREG + MCONTEXT_GREGS)(a0)    /* zero */
-
-       REG_S   s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
+       REG_S   s0, (MCONTEXT_GREGOFF + 16 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s1, (MCONTEXT_GREGOFF + 17 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s2, (MCONTEXT_GREGOFF + 18 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s3, (MCONTEXT_GREGOFF + 19 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s4, (MCONTEXT_GREGOFF + 20 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s5, (MCONTEXT_GREGOFF + 21 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s6, (MCONTEXT_GREGOFF + 22 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   s7, (MCONTEXT_GREGOFF + 23 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
 #if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
-       REG_S   _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
+       REG_S   _GP, (MCONTEXT_GREGOFF + 28 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
 #endif
-       REG_S   _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
-       REG_S   ra, MCONTEXT_PC(a0)
+       REG_S   _SP, (MCONTEXT_GREGOFF + 29 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   fp, (MCONTEXT_GREGOFF + 30 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   ra, (MCONTEXT_GREGOFF + 31 * MCONTEXT_GREGSZ + MCONTEXT_GREGS)(a0)
+       REG_S   ra, (MCONTEXT_GREGOFF + MCONTEXT_PC)(a0)
 
 #ifdef __mips_hard_float
 # if _MIPS_SIM == _ABI64