diff options
Diffstat (limited to 'arch/mips/kernel/r4k_switch.S')
-rw-r--r-- | arch/mips/kernel/r4k_switch.S | 29 |
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 |