$NetBSD: patch-ac,v 1.10 2009/02/08 12:51:04 asau Exp $

--- config/bsd/powerpc.s.orig	2005-06-16 19:55:17.000000000 +0400
+++ config/bsd/powerpc.s	2009-02-08 02:27:54.000000000 +0300
@@ -1,9 +1,11 @@
 #
-#	coswitch for the PowerPC architecture
+#	coswitch for the PowerPC architecture
 #
 
 	.file   "rswitch.s"
 
+	.set	RSIZE, 80		# room for regs 14-31, rounded up mod16
+
 	.data
 errmsg:		.string "new_context() returned in coswitch\n"
 
@@ -13,30 +15,13 @@
 	.type	coswitch,@function
 
 coswitch:
-	stwu	1, -80(1)		# allocate stack frame
+	stwu	1, -RSIZE(1)		# allocate stack frame
 
 					# Save Old Context:
 	stw	1, 0(3)			# SP
 	mflr	0
 	stw	0, 4(3)			# LR (return address)
-	stw	14, 0(1)		# GPRs 14-31 (save on stack)
-	stw	15, 4(1)
-	stw	16, 8(1)
-	stw	17, 12(1)
-	stw	18, 16(1)
-	stw	19, 20(1)
-	stw	20, 24(1)
-	stw	21, 28(1)
-	stw	22, 32(1)
-	stw	23, 36(1)
-	stw	24, 40(1)
-	stw	25, 44(1)
-	stw	26, 48(1)
-	stw	27, 52(1)
-	stw	28, 56(1)
-	stw	29, 60(1)
-	stw	30, 64(1)
-	stw	31, 68(1)
+	stmw	14, -RSIZE(1)		# GPRs 14-31 (save on stack)
 
 	cmpi	0, 5, 0
 	beq	first			# if first time
@@ -45,26 +30,9 @@
 	lwz	1, 0(4)			# SP
 	lwz	0, 4(4)			# LR
 	mtlr	0
-	lwz	14, 0(1)		# GPRs 14-31 (from stack)
-	lwz	15, 4(1)
-	lwz	16, 8(1)
-	lwz	17, 12(1)
-	lwz	18, 16(1)
-	lwz	19, 20(1)
-	lwz	20, 24(1)
-	lwz	21, 28(1)
-	lwz	22, 32(1)
-	lwz	23, 36(1)
-	lwz	24, 40(1)
-	lwz	25, 44(1)
-	lwz	26, 48(1)
-	lwz	27, 52(1)
-	lwz	28, 56(1)
-	lwz	29, 60(1)
-	lwz	30, 64(1)
-	lwz	31, 68(1)
+	lmw	14, -RSIZE(1)		# GPRs 14-31 (from stack)
 
-	addic	1, 1, 80		# deallocate stack frame
+	addic	1, 1, RSIZE		# deallocate stack frame
 	blr				# return into new context
 
 first:					# First-time call:
