summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/i386/setcontext.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/setcontext.S')
-rw-r--r--sysdeps/unix/sysv/linux/i386/setcontext.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/setcontext.S b/sysdeps/unix/sysv/linux/i386/setcontext.S
index 22469b2b85..c493cf9798 100644
--- a/sysdeps/unix/sysv/linux/i386/setcontext.S
+++ b/sysdeps/unix/sysv/linux/i386/setcontext.S
@@ -61,6 +61,13 @@ ENTRY(__setcontext)
movl oEIP(%eax), %ecx
/* Load the new stack pointer. */
+ cfi_def_cfa (eax, 0)
+ cfi_offset (edi, oEDI)
+ cfi_offset (esi, oESI)
+ cfi_offset (ebp, oEBP)
+ cfi_offset (ebx, oEBX)
+ cfi_offset (edx, oEDX)
+ cfi_offset (ecx, oECX)
movl oESP(%eax), %esp
/* Push the return address on the new stack so we can return there. */
@@ -76,6 +83,10 @@ ENTRY(__setcontext)
movl oECX(%eax), %ecx
movl oEAX(%eax), %eax
+ /* End FDE here, we fall into another context. */
+ cfi_endproc
+ cfi_startproc
+
/* The following 'ret' will pop the address of the code and jump
to it. */