newlib-cygwin/newlib/libc/sys/go32/setjmp.S

62 lines
1.2 KiB
ArmAsm

/* This is file SETJMP.S */
/*
** Copyright (C) 1993 DJ Delorie
**
** This file is distributed under the terms listed in the document
** "copying.dj".
** 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