File:
[DVB] /
dietlibc /
i386 /
setjmp.S
Revision
1.7:
download - view:
text,
annotated -
select for diffs
Wed Sep 21 07:33:08 2005 UTC (18 years, 8 months ago) by
leitner
Branches:
MAIN
CVS tags:
HEAD
update syscalls
lots of fixes from Markus FX Oberhumer:
* better signal handling error detection
* setjmp.S on i386
* getenv on i386
* sys/stat.h -malign-double fix
* update fcntl.h for MIPS to 2.6.13 version
* jmp_buf is 40*8 instead of 58*8 on ppc64.
* This patch fixes the section of the TOC entries on ppc64
* libstdc++ updates for gcc 4
* remove cstddef and cwchar (no longer needed)
* int -> ssize_t for read and write
* sigjmp.c: __mask_was_saved was not set in all cases!
* another round of ILP64 cleanups
#include <setjmp.h>
.text
.weak setjmp
.type setjmp,@function
setjmp:
.globl __setjmp
.type __setjmp,@function
__setjmp:
movl 0(%esp), %ecx /* Save PC we are returning to now. */
leal 4(%esp), %edx /* Save SP as it will be after we return. */
movl (%edx), %eax
pushl $0
pushl %eax
call __sigsetjmp_internal
add $8,%esp
ret
.globl __sigsetjmp
.type __sigsetjmp,@function
__sigsetjmp:
movl 0(%esp), %ecx /* Save PC we are returning to now. */
leal 4(%esp), %edx /* Save SP as it will be after we return. */
movl (%edx), %eax
__sigsetjmp_internal:
/* Save registers. */
movl %ebx, (JB_BX*4)(%eax)
movl %esi, (JB_SI*4)(%eax)
movl %edi, (JB_DI*4)(%eax)
movl %ebp, (JB_BP*4)(%eax)
movl %edx, (JB_SP*4)(%eax)
movl %ecx, (JB_PC*4)(%eax)
/* Make a tail call to __sigjmp_save; it takes the same args. */
#ifdef PIC
call 1f
addl $_GLOBAL_OFFSET_TABLE_, %ecx
jmp *__sigjmp_save@GOT(%ecx)
1: movl (%esp), %ecx
ret
#else
jmp __sigjmp_save
#endif
.size __sigsetjmp,.-__sigsetjmp;
LinuxTV legacy CVS <linuxtv.org/cvs>