summaryrefslogtreecommitdiffstats
path: root/lib/libc/arm/gen/setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/arm/gen/setjmp.S')
-rw-r--r--lib/libc/arm/gen/setjmp.S18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/libc/arm/gen/setjmp.S b/lib/libc/arm/gen/setjmp.S
index be12412..79aee9f 100644
--- a/lib/libc/arm/gen/setjmp.S
+++ b/lib/libc/arm/gen/setjmp.S
@@ -48,16 +48,14 @@ __FBSDID("$FreeBSD$");
ENTRY(setjmp)
/* Block all signals and retrieve the old signal mask */
stmfd sp!, {r0, r14}
- mov r0, #0x00000000
+ add r2, r0, #4 /* oset */
+ mov r0, #0x00000001 /* SIG_BLOCK */
+ mov r1, #0 /* set */
- bl PIC_SYM(_C_LABEL(sigblock), PLT)
- mov r1, r0
+ bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
ldmfd sp!, {r0, r14}
- /* Store signal mask */
- str r1, [r0, #(25 * 4)]
-
ldr r1, .Lsetjmp_magic
str r1, [r0], #4
@@ -88,14 +86,16 @@ ENTRY(__longjmp)
bne botch
/* Fetch signal mask */
- ldr r2, [r0, #(25 * 4)]
+ add r2, r0, #4
/* Set signal mask */
stmfd sp!, {r0, r1, r14}
sub sp, sp, #4 /* align the stack */
- mov r0, r2
- bl PIC_SYM(_C_LABEL(sigsetmask), PLT)
+ mov r1, r2
+ mov r0, #3 /* SIG_SETMASK */
+ mov r2, #0
+ bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
add sp, sp, #4 /* unalign the stack */
ldmfd sp!, {r0, r1, r14}
OpenPOWER on IntegriCloud