home *** CD-ROM | disk | FTP | other *** search
- /* This is file SETJMP.S */
- /*
- ** Copyright (C) 1993 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
- **
- ** This file is distributed under the terms listed in the document
- ** "copying.dj", available from DJ Delorie at the address above.
- ** A copy of "copying.dj" should accompany this file; if not, a copy
- ** should be available from where this file was obtained. This file
- ** may not be distributed without a verbatim copy of "copying.dj".
- **
- ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
- ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- */
-
- /*
- ** jmp_buf:
- ** eax ebx ecx edx esi edi ebp esp eip es fs gs ss
- ** 0 4 8 12 16 20 24 28 32 36 38 40 42
- */
-
- .globl _setjmp /* jmp_buf */
- _setjmp:
- pushl %ebp
- movl %esp,%ebp
-
- pushl %edi
- movl 8(%ebp),%edi
-
- movl %eax,0(%edi)
- movl %ebx,4(%edi)
- movl %ecx,8(%edi)
- movl %edx,12(%edi)
- movl %esi,16(%edi)
-
- movl -4(%ebp),%eax
- movl %eax,20(%edi)
-
- movl 0(%ebp),%eax
- movl %eax,24(%edi)
-
- movl %esp,%eax
- addl $12,%eax
- movl %eax,28(%edi)
-
- movl 4(%ebp),%eax
- movl %eax,32(%edi)
-
- movw %es, %ax
- movw %ax, 36(%edi)
- movw %fs, %ax
- movw %ax, 38(%edi)
- movw %gs, %ax
- movw %ax, 40(%edi)
- movw %ss, %ax
- movw %ax, 42(%edi)
-
- popl %edi
- movl $0,%eax
- leave
- ret
-