diff options
Diffstat (limited to 'lib/libc/arm/gen')
-rw-r--r-- | lib/libc/arm/gen/_setjmp.S | 5 | ||||
-rw-r--r-- | lib/libc/arm/gen/alloca.S | 2 | ||||
-rw-r--r-- | lib/libc/arm/gen/divsi3.S | 8 | ||||
-rw-r--r-- | lib/libc/arm/gen/setjmp.S | 10 |
4 files changed, 12 insertions, 13 deletions
diff --git a/lib/libc/arm/gen/_setjmp.S b/lib/libc/arm/gen/_setjmp.S index 91f5c66..b938405 100644 --- a/lib/libc/arm/gen/_setjmp.S +++ b/lib/libc/arm/gen/_setjmp.S @@ -64,11 +64,12 @@ ENTRY(_setjmp) stmia r0, {r4-r14} mov r0, #0x00000000 - mov r15, r14 + RET .L_setjmp_magic: .word _JB_MAGIC__SETJMP +WEAK_ALIAS(___longjmp, _longjmp) ENTRY(_longjmp) ldr r2, .L_setjmp_magic ldr r3, [r0], #4 @@ -96,7 +97,7 @@ ENTRY(_longjmp) mov r0, r1 teq r0, #0x00000000 moveq r0, #0x00000001 - mov r15, r14 + RET /* validation failed, die die die. */ botch: diff --git a/lib/libc/arm/gen/alloca.S b/lib/libc/arm/gen/alloca.S index 4694d3c..9569d86 100644 --- a/lib/libc/arm/gen/alloca.S +++ b/lib/libc/arm/gen/alloca.S @@ -42,4 +42,4 @@ ENTRY(alloca) bic r0, r0, #0x00000007 sub sp, sp, r0 /* Adjust the stack pointer */ mov r0, sp /* r0 = base of new space */ - mov r15, r14 /* return */ + RET diff --git a/lib/libc/arm/gen/divsi3.S b/lib/libc/arm/gen/divsi3.S index baab96b..104a958 100644 --- a/lib/libc/arm/gen/divsi3.S +++ b/lib/libc/arm/gen/divsi3.S @@ -47,7 +47,7 @@ ENTRY(__modsi3) /* XXX should cause a fatal error */ mvn r0, #0 #endif - mov pc, lr + RET ENTRY(__udivsi3) .L_udivide: /* r0 = r0 / r1; r1 = r0 % r1 */ @@ -69,7 +69,7 @@ ENTRY(__udivsi3) .L_divide_l0: /* r0 == 1 */ mov r0, r1 mov r1, #0 - mov pc, lr + RET ENTRY(__divsi3) .L_divide: /* r0 = r0 / r1; r1 = r0 % r1 */ @@ -373,7 +373,7 @@ ENTRY(__divsi3) movs ip, ip, lsl #1 bicmi r0, r0, #0x80000000 /* Fix incase we divided 0x80000000 */ rsbmi r0, r0, #0 - mov pc, lr + RET .L_udivide_l1: tst ip, #0x10000000 @@ -384,4 +384,4 @@ ENTRY(__divsi3) subhs r1, r1, r0 addhs r3, r3, r2 mov r0, r3 - mov pc, lr + RET diff --git a/lib/libc/arm/gen/setjmp.S b/lib/libc/arm/gen/setjmp.S index 53959e7..f0e9cfa 100644 --- a/lib/libc/arm/gen/setjmp.S +++ b/lib/libc/arm/gen/setjmp.S @@ -47,7 +47,7 @@ __FBSDID("$FreeBSD$"); ENTRY(setjmp) /* Block all signals and retrieve the old signal mask */ stmfd sp!, {r0, r14} - add r2, r0, #4 /* oset */ + add r2, r0, #(25 * 4) /* oset */ mov r0, #0x00000001 /* SIG_BLOCK */ mov r1, #0 /* set */ @@ -70,7 +70,7 @@ ENTRY(setjmp) /* Store integer registers */ stmia r0, {r4-r14} mov r0, #0x00000000 - mov r15, r14 + RET .Lsetjmp_magic: .word _JB_MAGIC_SETJMP @@ -84,14 +84,12 @@ ENTRY(__longjmp) teq r2, r3 bne botch - /* Fetch signal mask */ - add r2, r0, #4 /* Set signal mask */ stmfd sp!, {r0, r1, r14} sub sp, sp, #4 /* align the stack */ - mov r1, r2 + add r1, r0, #(25 * 4) /* Signal mask */ mov r0, #3 /* SIG_SETMASK */ mov r2, #0 bl PIC_SYM(_C_LABEL(sigprocmask), PLT) @@ -122,7 +120,7 @@ ENTRY(__longjmp) mov r0, r1 teq r0, #0x00000000 moveq r0, #0x00000001 - mov r15, r14 + RET /* validation failed, die die die. */ botch: |