version 1.1.2.1, 2001/10/08 20:17:01 |
version 1.1.2.2, 2001/11/14 19:31:51 |
|
|
|
|
ENTRY(setjmp) |
ENTRY(setjmp) |
/* Block all signals and retrieve the old signal mask */ |
/* Block all signals and retrieve the old signal mask */ |
stmfd r13!, {r0, r14} |
stmfd sp!, {r0, r14} |
mov r0, #0x00000000 |
mov r0, #0x00000000 |
|
|
bl PIC_SYM(_C_LABEL(sigblock), PLT) |
bl PIC_SYM(_C_LABEL(sigblock), PLT) |
mov r1, r0 |
mov r1, r0 |
|
|
ldmfd r13!, {r0, r14} |
ldmfd sp!, {r0, r14} |
|
|
/* Store signal mask */ |
/* Store signal mask */ |
str r1, [r0, #(25 * 4)] |
str r1, [r0, #(25 * 4)] |
|
|
ldr r2, [r0, #(25 * 4)] |
ldr r2, [r0, #(25 * 4)] |
|
|
/* Set signal mask */ |
/* Set signal mask */ |
stmfd r13!, {r0, r1, r14} |
stmfd sp!, {r0, r1, r14} |
|
sub sp, sp, #4 /* align the stack */ |
|
|
mov r0, r2 |
mov r0, r2 |
bl PIC_SYM(_C_LABEL(sigsetmask), PLT) |
bl PIC_SYM(_C_LABEL(sigsetmask), PLT) |
|
|
ldmfd r13!, {r0, r1, r14} |
add sp, sp, #4 /* unalign the stack */ |
|
ldmfd sp!, {r0, r1, r14} |
|
|
add r0, r0, #4 |
add r0, r0, #4 |
#ifdef SOFTFLOAT |
#ifdef SOFTFLOAT |
|
|
/* Restore integer registers */ |
/* Restore integer registers */ |
ldmia r0, {r4-r14} |
ldmia r0, {r4-r14} |
|
|
/* Validate r13 and r14 */ |
/* Validate sp and r14 */ |
teq r13, #0 |
teq sp, #0 |
beq botch |
teqne r14, #0 |
teq r14, #0 |
|
beq botch |
beq botch |
|
|
/* Set return value */ |
/* Set return value */ |