about summary refs log tree commit diff
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.  */