git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create tag
[linux-2.6.git]
/
arch
/
mips
/
kernel
/
r4k_switch.S
diff --git
a/arch/mips/kernel/r4k_switch.S
b/arch/mips/kernel/r4k_switch.S
index
1fc3b2e
..
9eb885d
100644
(file)
--- a/
arch/mips/kernel/r4k_switch.S
+++ b/
arch/mips/kernel/r4k_switch.S
@@
-75,8
+75,17
@@
and t0, t0, t1
LONG_S t0, ST_OFF(t3)
and t0, t0, t1
LONG_S t0, ST_OFF(t3)
- fpu_save_double a0 t1 t0 t2 # c0_status passed in t1
- # clobbers t0 and t2
+#ifdef CONFIG_MIPS32
+ fpu_save_double a0 t0 # clobbers t0
+#endif
+#ifdef CONFIG_MIPS64
+ sll t2, t0, 5
+ bgez t2, 2f
+ sdc1 $f0, (THREAD_FPU + 0x00)(a0)
+ fpu_save_16odd a0
+2:
+ fpu_save_16even a0 t1 # clobbers t1
+#endif
1:
/*
1:
/*
@@
-105,10
+114,18
@@
* Save a thread's fp context.
*/
LEAF(_save_fp)
* Save a thread's fp context.
*/
LEAF(_save_fp)
+#ifdef CONFIG_MIPS32
+ fpu_save_double a0 t1 # clobbers t1
+#endif
#ifdef CONFIG_MIPS64
#ifdef CONFIG_MIPS64
- mfc0 t1, CP0_STATUS
+ mfc0 t0, CP0_STATUS
+ sll t1, t0, 5
+ bgez t1, 1f # 16 register mode?
+ fpu_save_16odd a0
+1:
+ fpu_save_16even a0 t1 # clobbers t1
+ sdc1 $f0, (THREAD_FPU + 0x00)(a0)
#endif
#endif
- fpu_save_double a0 t1 t0 t2 # clobbers t1
jr ra
END(_save_fp)
jr ra
END(_save_fp)
@@
-116,7
+133,19
@@
LEAF(_save_fp)
* Restore a thread's fp context.
*/
LEAF(_restore_fp)
* Restore a thread's fp context.
*/
LEAF(_restore_fp)
+#ifdef CONFIG_MIPS32
fpu_restore_double a0, t1 # clobbers t1
fpu_restore_double a0, t1 # clobbers t1
+#endif
+#ifdef CONFIG_MIPS64
+ mfc0 t0, CP0_STATUS
+ sll t1, t0, 5
+ bgez t1, 1f # 16 register mode?
+
+ fpu_restore_16odd a0
+1: fpu_restore_16even a0, t0 # clobbers t0
+ ldc1 $f0, (THREAD_FPU + 0x00)(a0)
+#endif
+
jr ra
END(_restore_fp)
jr ra
END(_restore_fp)