URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [newlib/] [newlib/] [libc/] [sys/] [go32/] [longjmp.S] - Rev 1765
Compare with Previous | Blame | View Log
/* This is file LONGJMP.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 _longjmp /* jmp_buf, int */_longjmp:pushl %ebpmovl %esp,%ebpmovl 8(%ebp),%edi /* get jmp_buf */movl 12(%ebp),%eax /* store retval in j->eax */testl %eax,%eaxjne 0fincl %eax0:movl %eax,0(%edi)movl 24(%edi),%ebppushfl /* get flags so will only re-enable */popl %ebx /* interrupts if they were previously *//* enabled */climovw 42(%edi),%axmovw %ax,%ssmovl 28(%edi),%esppushl 32(%edi) /* for a ret! */pushl %ebx /* save flags that contain previous *//* interrupt state */movw 36(%edi),%axmovw %ax,%esmovw 38(%edi),%axmovw %ax,%fsmovw 40(%edi),%axmovw %ax,%gsmovl 0(%edi),%eaxmovl 4(%edi),%ebxmovl 8(%edi),%ecxmovl 12(%edi),%edxmovl 16(%edi),%esimovl 20(%edi),%edipopfl /* restore previous interrupt state */ret /* actually jump to new eip */
