Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / asm-mips / asmmacro-64.h
index 10b71cc..559c355 100644 (file)
@@ -8,13 +8,14 @@
 #ifndef _ASM_ASMMACRO_64_H
 #define _ASM_ASMMACRO_64_H
 
-#include <asm/offset.h>
+#include <asm/asm-offsets.h>
 #include <asm/regdef.h>
 #include <asm/fpregdef.h>
 #include <asm/mipsregs.h>
 
        .macro  fpu_save_16even thread tmp=t0
        cfc1    \tmp, fcr31
+       sdc1    $f0,  THREAD_FPR0(\thread)
        sdc1    $f2,  THREAD_FPR2(\thread)
        sdc1    $f4,  THREAD_FPR4(\thread)
        sdc1    $f6,  THREAD_FPR6(\thread)
        sdc1    $f31, THREAD_FPR31(\thread)
        .endm
 
+       .macro  fpu_save_double thread status tmp1 tmp2
+       sll     \tmp2, \tmp1, 5
+       bgez    \tmp2, 2f
+       fpu_save_16odd \thread
+2:
+       fpu_save_16even \thread \tmp1                   # clobbers t1
+       .endm
+
        .macro  fpu_restore_16even thread tmp=t0
        lw      \tmp, THREAD_FCR31(\thread)
        ldc1    $f0,  THREAD_FPR0(\thread)
        ldc1    $f31, THREAD_FPR31(\thread)
        .endm
 
+       .macro  fpu_restore_double thread tmp
+       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
+       .endm
+
        .macro  cpu_save_nonscratch thread
        LONG_S  s0, THREAD_REG16(\thread)
        LONG_S  s1, THREAD_REG17(\thread)