summaryrefslogtreecommitdiffhomepage
path: root/src/setjmp/nt32/setjmp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/setjmp/nt32/setjmp.s')
-rw-r--r--src/setjmp/nt32/setjmp.s14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/setjmp/nt32/setjmp.s b/src/setjmp/nt32/setjmp.s
index 7ef6485..d00fba0 100644
--- a/src/setjmp/nt32/setjmp.s
+++ b/src/setjmp/nt32/setjmp.s
@@ -10,6 +10,20 @@
___setjmp:
__setjmp:
_setjmp:
+ movl 4(%esp), %edx # jump buffer
+
+ movl (%esp), %eax # return address
+ movl %eax, (%edx)
+
+ leal 4(%esp), %ecx # caller's stack pointer
+ movl %ecx, 4(%edx)
+
+ movl %ebx, 8(%edx)
+ movl %ebp, 12(%edx)
+ movl %edi, 16(%edx)
+ movl %esi, 20(%edx)
+
+ xor %eax,%eax
ret
.section .got$setjmp,"r"