Module Name: src
Committed By: skrll
Date: Fri Apr 19 13:14:11 UTC 2013
Modified Files:
src/lib/libc/arch/arm/gen: _setjmp.S setjmp.S
Log Message:
Actually fail if the magic number is found to be wrong in __longjmp.
Avoid overwriting the {,_}longjmp return value in __ARM_EABI__
ok matt@
To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/lib/libc/arch/arm/gen/_setjmp.S
cvs rdiff -u -r1.12 -r1.13 src/lib/libc/arch/arm/gen/setjmp.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/arch/arm/gen/_setjmp.S
diff -u src/lib/libc/arch/arm/gen/_setjmp.S:1.10 src/lib/libc/arch/arm/gen/_setjmp.S:1.11
--- src/lib/libc/arch/arm/gen/_setjmp.S:1.10 Tue Jan 29 19:23:09 2013
+++ src/lib/libc/arch/arm/gen/_setjmp.S Fri Apr 19 13:14:10 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: _setjmp.S,v 1.10 2013/01/29 19:23:09 matt Exp $ */
+/* $NetBSD: _setjmp.S,v 1.11 2013/04/19 13:14:10 skrll Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@@ -107,10 +107,10 @@ ENTRY(_longjmp)
#ifdef __ARM_EABI__
teq r3, r2 /* did magic change? */
beq 1f /* no, don't restore VFP */
- add r1, r0, #(_JB_REG_D8 * 4)
- vldmia r1, {d8-d15}
- ldr r1, [r0, #(_JB_REG_FPSCR * 4)]
- vmsr fpscr, r1
+ add ip, r0, #(_JB_REG_D8 * 4)
+ vldmia ip, {d8-d15}
+ ldr ip, [r0, #(_JB_REG_FPSCR * 4)]
+ vmsr fpscr, ip
1:
#endif /* __ARM_EABI__ */
Index: src/lib/libc/arch/arm/gen/setjmp.S
diff -u src/lib/libc/arch/arm/gen/setjmp.S:1.12 src/lib/libc/arch/arm/gen/setjmp.S:1.13
--- src/lib/libc/arch/arm/gen/setjmp.S:1.12 Tue Jan 29 19:23:09 2013
+++ src/lib/libc/arch/arm/gen/setjmp.S Fri Apr 19 13:14:10 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: setjmp.S,v 1.12 2013/01/29 19:23:09 matt Exp $ */
+/* $NetBSD: setjmp.S,v 1.13 2013/04/19 13:14:10 skrll Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe
@@ -105,6 +105,7 @@ ENTRY(__longjmp14)
ldr ip, .Lsetjmp_magic
bic r3, r2, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP)
teq r3, ip
+ bne .Lbotch
/* Restore the signal mask. */
stmfd sp!, {r0-r2, r14}
@@ -118,10 +119,10 @@ ENTRY(__longjmp14)
tst r2, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP)
/* is this a VFP magic? */
beq 1f /* no, don't restore VFP */
- add r1, r0, #(_JB_REG_D8 * 4)
- vldmia r1, {d8-d15}
- ldr r1, [r0, #(_JB_REG_FPSCR * 4)]
- vmsr fpscr, r1
+ add ip, r0, #(_JB_REG_D8 * 4)
+ vldmia ip, {d8-d15}
+ ldr ip, [r0, #(_JB_REG_FPSCR * 4)]
+ vmsr fpscr, ip
1:
#endif /* __ARM_EABI__ */