summaryrefslogtreecommitdiff
path: root/sysdeps/i386/bsd-_setjmp.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-01-17 01:01:02 +0000
committerUlrich Drepper <drepper@redhat.com>2001-01-17 01:01:02 +0000
commiteca90c85f5c58634c573a6c59b382173fb2424bd (patch)
treeafb727ddbd31fd9ab99c789e8c774663828d5b11 /sysdeps/i386/bsd-_setjmp.S
parent376c348c9175470e8f48a563311203cbf8bf7e80 (diff)
Update.
* setjmp/setjmp.h: Cleanup definition of setjmp macro.
Diffstat (limited to 'sysdeps/i386/bsd-_setjmp.S')
-rw-r--r--sysdeps/i386/bsd-_setjmp.S19
1 files changed, 11 insertions, 8 deletions
diff --git a/sysdeps/i386/bsd-_setjmp.S b/sysdeps/i386/bsd-_setjmp.S
index aa9b8edfd8..5b215f05f1 100644
--- a/sysdeps/i386/bsd-_setjmp.S
+++ b/sysdeps/i386/bsd-_setjmp.S
@@ -35,18 +35,21 @@
ENTRY (BP_SYM (_setjmp))
ENTER
- movl JMPBUF(%esp), %eax
- CHECK_BOUNDS_BOTH_WIDE (%eax, JMPBUF(%esp), $JB_SIZE)
+ xorl %eax, %eax
+ movl JMPBUF(%esp), %edx
+ CHECK_BOUNDS_BOTH_WIDE (%edx, JMPBUF(%esp), $(JB_SIZE+4))
/* Save registers. */
- movl %ebx, (JB_BX*4)(%eax)
- movl %esi, (JB_SI*4)(%eax)
- movl %edi, (JB_DI*4)(%eax)
+ movl %ebx, (JB_BX*4)(%edx)
+ movl %esi, (JB_SI*4)(%edx)
+ movl %edi, (JB_DI*4)(%edx)
leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
- movl %ecx, (JB_SP*4)(%eax)
+ movl %ecx, (JB_SP*4)(%edx)
movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
- movl %ecx, (JB_PC*4)(%eax)
+ movl %ecx, (JB_PC*4)(%edx)
LEAVE
- movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */
+ movl %ebp, (JB_BP*4)(%edx) /* Save caller's frame pointer. */
+
+ movl %eax, JB_SIZE(%edx) /* No signal mask set. */
ret
END (BP_SYM (_setjmp))