summaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/r4k_switch.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/r4k_switch.S')
-rw-r--r--arch/mips/kernel/r4k_switch.S29
1 files changed, 14 insertions, 15 deletions
diff --git a/arch/mips/kernel/r4k_switch.S b/arch/mips/kernel/r4k_switch.S
index 97e253028..cb7f9891f 100644
--- a/arch/mips/kernel/r4k_switch.S
+++ b/arch/mips/kernel/r4k_switch.S
@@ -25,26 +25,25 @@
.set mips3
.align 5
LEAF(r4xx0_resume)
- GET_CURRENT(t0)
mfc0 t1, CP0_STATUS
- nop
- sw t1, THREAD_STATUS(t0)
+ sw t1, THREAD_STATUS($28)
ori t2, t1, 0x1f
xori t2, t2, 0x1e
mtc0 t2, CP0_STATUS
- CPU_SAVE_NONSCRATCH(t0)
+ CPU_SAVE_NONSCRATCH($28)
sll t2, t1, 2 # Save floating point state
bgez t2, 2f
- sw ra, THREAD_REG31(t0)
+ sw ra, THREAD_REG31($28)
sll t2, t1, 5
bgez t2, 1f
- swc1 $f0, (THREAD_FPU + 0x00)(t0)
- FPU_SAVE_16ODD(t0)
+ swc1 $f0, (THREAD_FPU + 0x00)($28)
+ FPU_SAVE_16ODD($28)
1:
- FPU_SAVE_16EVEN(t0, t1) # clobbers t1
+ FPU_SAVE_16EVEN($28, t1) # clobbers t1
2:
- lw a3, TASK_MM(a0)
- lw a2, THREAD_STATUS(a0)
+ move $28, a0
+ lw a3, TASK_MM($28)
+ lw a2, THREAD_STATUS($28)
lw a3, MM_CONTEXT(a3)
ori t1, a2, 1 # restore fpu, pipeline magic
andi a3, a3, 0xff
@@ -55,13 +54,13 @@
bgez t0, 2f
sll t0, a2, 5
bgez t0, 1f
- lwc1 $f0, (THREAD_FPU + 0x00)(a0)
- FPU_RESTORE_16ODD(a0)
+ lwc1 $f0, (THREAD_FPU + 0x00)($28)
+ FPU_RESTORE_16ODD($28)
1:
- FPU_RESTORE_16EVEN(a0, t0) # clobbers t0
+ FPU_RESTORE_16EVEN($28, t0) # clobbers t0
2:
- CPU_RESTORE_NONSCRATCH(a0)
- lw t0, THREAD_KSP(a0)
+ CPU_RESTORE_NONSCRATCH($28)
+ lw t0, THREAD_KSP($28)
sw t0, kernelsp
jr ra
mtc0 a2, CP0_STATUS