summaryrefslogtreecommitdiffstats
path: root/lib/libc/arm/gen
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/arm/gen')
-rw-r--r--lib/libc/arm/gen/_setjmp.S5
-rw-r--r--lib/libc/arm/gen/alloca.S2
-rw-r--r--lib/libc/arm/gen/divsi3.S8
-rw-r--r--lib/libc/arm/gen/setjmp.S10
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:
OpenPOWER on IntegriCloud