Use the new macro in places where an empty register window set is required.
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk --- arch/sparc64/call-client.S | 4 +++- arch/sparc64/cpustate.h | 6 ++++-- arch/sparc64/vectors.S | 8 ++++++-- 3 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/arch/sparc64/call-client.S b/arch/sparc64/call-client.S index 82657c6..5b5cae2 100644 --- a/arch/sparc64/call-client.S +++ b/arch/sparc64/call-client.S @@ -81,7 +81,9 @@ sparc64_of_client_interface: stx %g7, [%g1 + 0x4d0] SAVE_CPU_STATE(cif) - + + RESET_CPU_WINDOW_STATE(cif) + /* Move to OpenBIOS context stack */ setx _fcstack_ptr, %g6, %g7 ldx [%g7], %g6 diff --git a/arch/sparc64/cpustate.h b/arch/sparc64/cpustate.h index 1f6c1a0..bb5823b 100644 --- a/arch/sparc64/cpustate.h +++ b/arch/sparc64/cpustate.h @@ -116,8 +116,10 @@ save_cpu_window_##type: \ add %g5, 0x80, %g5; \ \ /* For 8 windows with 16 registers to save in the window, memory required \ - is 16*8*8 = 0x400 bytes */ \ - \ + is 16*8*8 = 0x400 bytes */ + +#define RESET_CPU_WINDOW_STATE(type) \ + wrpr %g0, %cwp; \ /* Now we should be in window 0 so update the other window registers */ \ rdpr %ver, %g6; \ and %g6, 0xf, %g6; \ diff --git a/arch/sparc64/vectors.S b/arch/sparc64/vectors.S index 9d86b6b..fa30546 100644 --- a/arch/sparc64/vectors.S +++ b/arch/sparc64/vectors.S @@ -340,7 +340,9 @@ reload_DMMU_tlb: stx %g1, [%g7] SAVE_CPU_STATE(dtlb) - + + RESET_CPU_WINDOW_STATE(dtlb) + /* Switch to 8K TLB locked OpenBIOS stack (note we add an additional 192 bytes required for gcc to save its arguments when building with -O0) */ setx _fcstack_ptr, %g6, %g7 @@ -391,7 +393,9 @@ reload_IMMU_tlb: stx %g1, [%g7] SAVE_CPU_STATE(itlb) - + + RESET_CPU_WINDOW_STATE(itlb) + /* Switch to 8K TLB locked OpenBIOS stack (note we add an additional 192 bytes required for gcc to save its arguments when building with -O0) */ setx _fcstack_ptr, %g6, %g7