summaryrefslogtreecommitdiff
path: root/newlib/libc/sys/sysvi386/_setjmp.s
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-15 09:38:53 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-15 09:39:34 -0500
commitf95a4a932476be2ba99e2fd081e8d2bc6ea12813 (patch)
tree75f67192cb2d7b7b575c94edda318e475239b63c /newlib/libc/sys/sysvi386/_setjmp.s
parentf60aca96985e68c7d8a52eb7bc955fb80e132f73 (diff)
Import newlib and create makefile
Diffstat (limited to 'newlib/libc/sys/sysvi386/_setjmp.s')
-rw-r--r--newlib/libc/sys/sysvi386/_setjmp.s24
1 files changed, 24 insertions, 0 deletions
diff --git a/newlib/libc/sys/sysvi386/_setjmp.s b/newlib/libc/sys/sysvi386/_setjmp.s
new file mode 100644
index 0000000..8f191b5
--- /dev/null
+++ b/newlib/libc/sys/sysvi386/_setjmp.s
@@ -0,0 +1,24 @@
+/
+/ our buffer looks like:
+/ eax,ebx,ecx,edx,esi,edi,esp,ebp,pc
+
+ .globl _setjmp
+ .globl setjmp
+_setjmp:
+setjmp:
+ pushl %ebx
+ movl 8(%esp), %ebx
+ movl %eax, (%ebx)
+ popl %eax
+ movl %eax, 4(%ebx)
+ movl %ecx, 8(%ebx)
+ movl %edx, 12(%ebx)
+ movl %esi, 16(%ebx)
+ movl %edi, 20(%ebx)
+ movl %esp, 24(%ebx)
+ movl %ebp, 28(%ebx)
+ movl (%esp), %eax
+ movl %eax, 32(%ebx)
+ xorl %eax, %eax
+ ret
+