summaryrefslogtreecommitdiff
path: root/libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S')
-rw-r--r--libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S12
1 files changed, 9 insertions, 3 deletions
diff --git a/libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S b/libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
index 0e3d35b54..268098c0b 100644
--- a/libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
+++ b/libc/ports/sysdeps/unix/sysv/linux/mips/getcontext.S
@@ -27,6 +27,7 @@
/* int getcontext (ucontext_t *ucp) */
.text
+ .set nomips16
LOCALSZ = 0
MASK = 0x00000000
#ifdef __PIC__
@@ -54,7 +55,8 @@ NESTED (__getcontext, FRAMESZ, ra)
# endif
PTR_ADDIU sp, -FRAMESZ
- SETUP_GP64 (GPOFF, __getcontext)
+ cfi_adjust_cfa_offset (FRAMESZ)
+ SETUP_GP64_STACK (GPOFF, __getcontext)
SAVE_GP (GPOFF)
#else /* ! __PIC__ */
@@ -124,19 +126,23 @@ NESTED (__getcontext, FRAMESZ, ra)
li v0, SYS_ify (rt_sigprocmask)
syscall
bnez a3, 99f
+ cfi_remember_state
#ifdef __PIC__
- RESTORE_GP64
+ RESTORE_GP64_STACK
PTR_ADDIU sp, FRAMESZ
+ cfi_adjust_cfa_offset (-FRAMESZ)
#endif
move v0, zero
jr ra
99:
+ cfi_restore_state
#ifdef __PIC__
PTR_LA t9, JUMPTARGET (__syscall_error)
- RESTORE_GP64
+ RESTORE_GP64_STACK
PTR_ADDIU sp, FRAMESZ
+ cfi_adjust_cfa_offset (-FRAMESZ)
jr t9
#else /* ! __PIC__ */