[parisc-linux-cvs] (no subject)

Matthew Wilcox willy@ldl.fc.hp.com
Mon, 30 Apr 2001 00:14:16 -0600


This patch saves and restores cr27 around context switches, so we can use
it as a per-thread data pointer.

Index: include/asm-parisc/assembly.h
===================================================================
RCS file: /home/cvs/parisc/linux/include/asm-parisc/assembly.h,v
retrieving revision 1.20
diff -u -p -r1.20 assembly.h
--- assembly.h	2001/03/22 16:24:19	1.20
+++ assembly.h	2001/04/30 06:06:32
@@ -269,6 +269,7 @@
 #ifdef __LP64__
 	.macro	callee_save
 	std,ma	  %r3,	144(%r30)
+	mfctl	  %cr27, %r3
 	std	  %r4,	-136(%r30)
 	std	  %r5,	-128(%r30)
 	std	  %r6,	-120(%r30)
@@ -284,9 +285,11 @@
 	std	 %r16,	 -40(%r30)
 	std	 %r17,	 -32(%r30)
 	std	 %r18,	 -24(%r30)
+	std	  %r3,	 -16(%r30)
 	.endm
 
 	.macro	callee_rest
+	ldd	 -16(%r30),    %r3
 	ldd	 -24(%r30),   %r18
 	ldd	 -32(%r30),   %r17
 	ldd	 -40(%r30),   %r16
@@ -302,13 +305,15 @@
 	ldd	-120(%r30),    %r6
 	ldd	-128(%r30),    %r5
 	ldd	-136(%r30),    %r4
+	mtctl	%r3, %cr27
 	ldd,mb	-144(%r30),    %r3
 	.endm
 
-#else /* __LP64__ */
+#else /* ! __LP64__ */
 
 	.macro	callee_save
 	stw,ma	 %r3,	128(%r30)
+	mfctl	 %cr27, %r3
 	stw	 %r4,	-124(%r30)
 	stw	 %r5,	-120(%r30)
 	stw	 %r6,	-116(%r30)
@@ -324,9 +329,11 @@
 	stw	 %r16,	 -76(%r30)
 	stw	 %r17,	 -72(%r30)
 	stw	 %r18,	 -68(%r30)
+	stw	  %r3,	 -64(%r30)
 	.endm
 
 	.macro	callee_rest
+	ldw	 -64(%r30),    %r3
 	ldw	 -68(%r30),   %r18
 	ldw	 -72(%r30),   %r17
 	ldw	 -76(%r30),   %r16
@@ -342,9 +349,10 @@
 	ldw	-116(%r30),   %r6
 	ldw	-120(%r30),   %r5
 	ldw	-124(%r30),   %r4
+	mtctl	%r3, %cr27
 	ldw,mb	-128(%r30),   %r3
 	.endm
-#endif /* __LP64__ */
+#endif /* ! __LP64__ */
 
 	.macro	save_specials	regs