linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / asm-mips / asmmacro-64.h
index 225feef..559c355 100644 (file)
        sdc1    $f31, THREAD_FPR31(\thread)
        .endm
 
-       .macro  fpu_save_double thread status tmp
-       sll     \tmp, \status, 5
-       bgez    \tmp, 2f
+       .macro  fpu_save_double thread status tmp1 tmp2
+       sll     \tmp2, \tmp1, 5
+       bgez    \tmp2, 2f
        fpu_save_16odd \thread
 2:
-       fpu_save_16even \thread \tmp
+       fpu_save_16even \thread \tmp1                   # clobbers t1
        .endm
 
        .macro  fpu_restore_16even thread tmp=t0
        ldc1    $f31, THREAD_FPR31(\thread)
        .endm
 
-       .macro  fpu_restore_double thread status tmp
-       sll     \tmp, \status, 5
-       bgez    \tmp, 1f                                # 16 register mode?
+       .macro  fpu_restore_double thread tmp
+       mfc0    t0, CP0_STATUS
+       sll     t1, t0, 5
+       bgez    t1, 1f                          # 16 register mode?
 
-       fpu_restore_16odd \thread
-1:     fpu_restore_16even \thread \tmp
+       fpu_restore_16odd a0
+1:     fpu_restore_16even a0, t0               # clobbers t0
        .endm
 
        .macro  cpu_save_nonscratch thread