summaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/tsb.S
diff options
context:
space:
mode:
authorDavid S. Miller2006-02-17 23:58:02 +0100
committerDavid S. Miller2006-03-20 10:13:32 +0100
commit6c8927c9634e8a1bc95d5291c55205707f9fa40a (patch)
treee59db7dca9ab26808703ee3c20ad59c3425024fa /arch/sparc64/kernel/tsb.S
parent[SPARC64]: Check for errors in hypervisor_tlb_lock(). (diff)
downloadkernel-qcow2-linux-6c8927c9634e8a1bc95d5291c55205707f9fa40a.tar.gz
kernel-qcow2-linux-6c8927c9634e8a1bc95d5291c55205707f9fa40a.tar.xz
kernel-qcow2-linux-6c8927c9634e8a1bc95d5291c55205707f9fa40a.zip
[SPARC64]: Fix some SUN4V TLB handling bugs.
1) Add error return checking for TLB load hypervisor calls. 2) Don't fallthru to dtlb tsb miss handler from itlb tsb miss handler, oops. 3) On window fixups, propagate fault information to fixup handler correctly. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/tsb.S')
-rw-r--r--arch/sparc64/kernel/tsb.S6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/sparc64/kernel/tsb.S b/arch/sparc64/kernel/tsb.S
index 7996c9d66702..a17259cf34b8 100644
--- a/arch/sparc64/kernel/tsb.S
+++ b/arch/sparc64/kernel/tsb.S
@@ -135,8 +135,8 @@ tsb_do_fault:
wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate
.section .sun4v_2insn_patch, "ax"
.word 661b
- nop
- nop
+ SET_GL(1)
+ ldxa [%g0] ASI_SCRATCHPAD, %g2
.previous
bne,pn %xcc, tsb_do_itlb_fault
@@ -150,7 +150,7 @@ tsb_do_dtlb_fault:
ldxa [%g4] ASI_DMMU, %g5
.section .sun4v_2insn_patch, "ax"
.word 661b
- mov %g4, %g5
+ ldx [%g2 + HV_FAULT_D_ADDR_OFFSET], %g5
nop
.previous