[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