diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/setcontext.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/setcontext.S | 11 |
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. */ |