mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-15 11:00:04 +08:00
ee37ede1d3
* libc/include/machine/setjmp-dj.h: With DJ Delorie's permission, changed the copyright information to allow free modification of the file with no reference to "copying.dj". * libc/include/sys/stat-dj.h: Ditto. * libc/machine/i386/setjmp.S: Ditto. * libc/sys/h8300hms/sys/file.h: Ditto. * libc/sys/sysmec/access.c: Ditto. * libc/sys/sysnecv850/access.c: Ditto. * libc/stdio/mktemp.c: Fixed typo for the word copyright. * libc/stdlib/getenv_r.c: Ditto. * libc/stdlib/putenv_r.c: Ditto. * libc/stdlib/setenv_r.c: Ditto. * libc/stdlib/getenv.c: Removed DJ reference since any possible modifications will now be in the _r version of this file. * libc/stdlib/putenv.c: Ditto. * libc/stdlib/setenv.c: Ditto. * libc/sys/go32/copying.dj: Removed DJ's address which is no longer valid. Added a reference to DJ's web page that contains his address. * libc/sys/go32/*.s: Removed references to DJ's old address. * libc/sys/go32/*.c: Ditto. * libc/sys/go32/*.h: Ditto. * libc/sys/go32/*.S: Ditto. * libc/sys/go32/sys/*.h: Ditto.
66 lines
1.4 KiB
ArmAsm
66 lines
1.4 KiB
ArmAsm
/* This is file LONGJMP.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 _longjmp /* jmp_buf, int */
|
|
_longjmp:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
|
|
movl 8(%ebp),%edi /* get jmp_buf */
|
|
movl 12(%ebp),%eax /* store retval in j->eax */
|
|
testl %eax,%eax
|
|
jne 0f
|
|
incl %eax
|
|
0:
|
|
movl %eax,0(%edi)
|
|
|
|
movl 24(%edi),%ebp
|
|
|
|
pushfl /* get flags so will only re-enable */
|
|
popl %ebx /* interrupts if they were previously */
|
|
/* enabled */
|
|
|
|
cli
|
|
movw 42(%edi),%ax
|
|
movw %ax,%ss
|
|
movl 28(%edi),%esp
|
|
|
|
pushl 32(%edi) /* for a ret! */
|
|
|
|
pushl %ebx /* save flags that contain previous */
|
|
/* interrupt state */
|
|
|
|
movw 36(%edi),%ax
|
|
movw %ax,%es
|
|
movw 38(%edi),%ax
|
|
movw %ax,%fs
|
|
movw 40(%edi),%ax
|
|
movw %ax,%gs
|
|
movl 0(%edi),%eax
|
|
movl 4(%edi),%ebx
|
|
movl 8(%edi),%ecx
|
|
movl 12(%edi),%edx
|
|
movl 16(%edi),%esi
|
|
movl 20(%edi),%edi
|
|
|
|
popfl /* restore previous interrupt state */
|
|
|
|
ret /* actually jump to new eip */
|