Changeset 25430
- Timestamp:
- 05/10/08 13:05:41 (6 days ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
haiku/trunk/src/system/kernel/lib/Jamfile
r25429 r25430 133 133 siglongjmp.S 134 134 sigsetjmp.S 135 kernel_longjmp_return.c 135 136 kernel_setjmp_save_sigs.c 136 137 arch_string.S # TODO: Not needed for X86! haiku/trunk/src/system/libroot/posix/arch/x86/Jamfile
r25428 r25430 1 1 SubDir HAIKU_TOP src system libroot posix arch x86 ; 2 2 3 # TODO: siglongjmp.S should use __longjmp_return to restore the signal mask.4 3 local genericSources = 5 4 setjmp_save_sigs.c 6 #longjmp_return.c5 longjmp_return.c 7 6 ; 8 7 haiku/trunk/src/system/libroot/posix/arch/x86/siglongjmp.S
r25427 r25430 3 3 ** Distributed under the terms of the Haiku License. 4 4 */ 5 6 5 7 6 #include "setjmp_internal.h" … … 20 19 mov 8(%esp), %eax 21 20 22 /* If value is 0, setjmp() must return 1. */23 test %eax, %eax24 jnz 1f25 mov $1, %eax26 1:27 28 21 // restore registers 29 22 mov JMP_REGS_EBX(%ecx), %ebx … … 33 26 mov JMP_REGS_ESP(%ecx), %esp 34 27 35 // jump back to the oldprogram location28 // prepare the stack so that we will return to the setjmp() program location 36 29 mov JMP_REGS_PC(%ecx), %edx 37 jmp *%edx 30 push %edx // return address 31 32 // let __setjmp_save_sigs deal with the signal mask and the return value 33 push %eax // value 34 push %ecx // buffer 35 call __longjmp_return 36 add $8, %esp 37 38 ret 39 38 40 39 41 #pragma weak longjmp=siglongjmp
