aboutsummaryrefslogtreecommitdiffstats
path: root/com32/lib/setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'com32/lib/setjmp.S')
-rw-r--r--com32/lib/setjmp.S68
1 files changed, 2 insertions, 66 deletions
diff --git a/com32/lib/setjmp.S b/com32/lib/setjmp.S
index 2fb5c234..ac047dda 100644
--- a/com32/lib/setjmp.S
+++ b/com32/lib/setjmp.S
@@ -1,70 +1,6 @@
-/*
- * arch/i386/setjmp.S
- *
- * setjmp/longjmp for the i386 architecture
- *
- *
- *
- * The jmp_buf is assumed to contain the following, in order:
- * %ebx
- * %esp
- * %ebp
- * %esi
- * %edi
- * <return address>
- */
-/*
- .text
- .align 4
-
- .globl _setjmp
- .type _setjmp, @function
-_setjmp: # gcc 4.0.1 wants this as an alias?
-
- .globl setjmp
- .type setjmp, @function
-setjmp:
-#ifdef REGPARM
- movl %eax,%edx
-#else
- movl 4(%esp),%edx
-#endif
- popl %ecx # Return address, and adjust the stack
- xorl %eax,%eax # Return value
- movl %ebx,(%edx)
- movl %esp,4(%edx) # Post-return %esp!
- pushl %ecx # Make the call/return stack happy
- movl %ebp,8(%edx)
- movl %esi,12(%edx)
- movl %edi,16(%edx)
- movl %ecx,20(%edx) # Return address
- ret
-
- .size setjmp,.-setjmp
-
- .text
- .align 4
- .globl longjmp
- .type longjmp, @function
-longjmp:
-#ifdef REGPARM
- xchgl %eax,%edx
-#else
- movl 4(%esp),%edx # jmp_ptr address
- movl 8(%esp),%eax # Return value
-#endif
- movl (%edx),%ebx
- movl 4(%edx),%esp
- movl 8(%edx),%ebp
- movl 12(%edx),%esi
- movl 16(%edx),%edi
- jmp *20(%edx)
-
- .size longjmp,.-longjmp
-*/
-#if __SIZEOF_POINTER__ == 4
+#ifdef __i386__
#include <i386/setjmp.S>
-#elif __SIZEOF_POINTER__ == 8
+#elif defined(__x86_64__)
#include <x86_64/setjmp.S>
#else
#error "Unable to build for to-be-defined architecture type"