Tue Nov 28 13:09:05 2017 UTC ()
fix to work
* no need to check x29 != NULL. fp may be NULL.
* don't break in-use register x5.


(ryo)
diff -r1.2 -r1.3 src/lib/libc/arch/aarch64/gen/_setjmp.S
diff -r1.1 -r1.2 src/lib/libc/arch/aarch64/gen/setjmp.S

cvs diff -r1.2 -r1.3 src/lib/libc/arch/aarch64/gen/_setjmp.S (expand / switch to context diff)
--- src/lib/libc/arch/aarch64/gen/_setjmp.S 2017/11/28 09:06:25 1.2
+++ src/lib/libc/arch/aarch64/gen/_setjmp.S 2017/11/28 13:09:05 1.3
@@ -1,4 +1,4 @@
-/* $NetBSD: _setjmp.S,v 1.2 2017/11/28 09:06:25 ryo Exp $ */
+/* $NetBSD: _setjmp.S,v 1.3 2017/11/28 13:09:05 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -83,7 +83,6 @@
 	ldp	x4, x5, [x0, #_JB_X29]
 
 	cbz	x3, .Lbotch
-	cbz	x4, .Lbotch
 	cbz	x5, .Lbotch
 	cmp	x2, x7
 	b.ne	.Lbotch
@@ -94,8 +93,8 @@
 	ldp	x25, x26, [x0, #_JB_X25]
 	ldp	x27, x28, [x0, #_JB_X27]
 
-	ldr	x5, [x0, #_JB_TPIDR]
-	msr	tpidr_el0, x5
+	ldr	x2, [x0, #_JB_TPIDR]
+	msr	tpidr_el0, x2
 
 	ldp	d8,  d9,  [x0, #_JB_D8]
 	ldp	d10, d11, [x0, #_JB_D10]

cvs diff -r1.1 -r1.2 src/lib/libc/arch/aarch64/gen/setjmp.S (expand / switch to context diff)
--- src/lib/libc/arch/aarch64/gen/setjmp.S 2014/08/10 05:47:36 1.1
+++ src/lib/libc/arch/aarch64/gen/setjmp.S 2017/11/28 13:09:05 1.2
@@ -1,4 +1,4 @@
-/*.$NetBSD: setjmp.S,v 1.1 2014/08/10 05:47:36 matt Exp $.*/
+/*.$NetBSD: setjmp.S,v 1.2 2017/11/28 13:09:05 ryo Exp $.*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -92,7 +92,6 @@
 
 	ldp	x4,  x5,  [x0, #_JB_X29]
 	cbz	x3, .Lbotch
-	cbz	x4, .Lbotch
 	cbz	x5, .Lbotch
 
 	ldp	x19, x20, [x0, #_JB_X19]
@@ -101,8 +100,8 @@
 	ldp	x25, x26, [x0, #_JB_X25]
 	ldp	x27, x28, [x0, #_JB_X27]
 
-	ldr	x5, [x0, #_JB_TPIDR]
-	msr	tpidr_el0, x5 
+	ldr	x2, [x0, #_JB_TPIDR]
+	msr	tpidr_el0, x2
 
 	ldp	d8,  d9,  [x0, #_JB_D8]
 	ldp	d10, d11, [x0, #_JB_D10]