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__ */
 

Reply via email to