Changeset 25428
- Timestamp:
- 05/10/08 12:16:09 (6 days ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
haiku/trunk/src/system/libroot/posix/arch/x86/Jamfile
r15479 r25428 8 8 9 9 MergeObject posix_arch_$(TARGET_ARCH).o : 10 setjmp.S11 10 sigsetjmp.S 12 11 siglongjmp.S haiku/trunk/src/system/libroot/posix/arch/x86/sigsetjmp.S
r14901 r25428 1 1 /* 2 * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. 2 3 * Copyright 2004-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved. 3 4 * Distributed under the terms of the MIT License. … … 16 17 */ 17 18 18 19 19 /* int sigsetjmp(jmp_buf buffer, int saveMask) */ 20 20 FUNCTION(__sigsetjmp): 21 21 FUNCTION(sigsetjmp): 22 // return address to %edx, stack pointer for return to %ecx (both are 23 // scratch registers) 24 mov 0(%esp), %edx 25 lea 4(%esp), %ecx 26 27 // buffer to %eax 22 28 mov 4(%esp), %eax 23 29 24 // fill __jmp_buf structure with current registers (%ecx can be clobbered) 30 sigsetjmp_setjmp_entry: 31 // fill __jmp_buf structure with current registers 25 32 mov %ebx, JMP_REGS_EBX(%eax) 26 33 mov %esi, JMP_REGS_ESI(%eax) … … 29 36 30 37 // save stack and return address (because that's where we intend to jump to) 31 lea 4(%esp,1), %ecx32 38 mov %ecx, JMP_REGS_ESP(%eax) 33 mov 0(%esp), %ecx 34 mov %ecx, JMP_REGS_PC(%eax) 39 mov %edx, JMP_REGS_PC(%eax) 35 40 36 41 jmp __setjmp_save_sigs 37 42 43 44 /* int setjmp(jmp_buf buffer) */ 45 FUNCTION(setjmp): 46 // prepare %edx, %ecx, and %eax for sigsetjmp 47 mov 0(%esp), %edx 48 lea 4(%esp), %ecx 49 mov (%ecx), %eax 50 51 // let sigsetjmp do the real work 52 pushl $0 // saveMask 53 push %eax // buffer 54 call sigsetjmp_setjmp_entry 55 add $8, %esp 56 57 ret 58 59 60 #pragma weak _setjmp=setjmp
