aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc64/kernel/tsb.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/tsb.S')
-rw-r--r--arch/sparc64/kernel/tsb.S11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/tsb.S b/arch/sparc64/kernel/tsb.S
index 50752c51877..76f2c0b01f3 100644
--- a/arch/sparc64/kernel/tsb.S
+++ b/arch/sparc64/kernel/tsb.S
@@ -55,6 +55,17 @@ tsb_reload:
brgez,a,pn %g5, tsb_do_fault
stx %g0, [%g1]
+ /* If it is larger than the base page size, don't
+ * bother putting it into the TSB.
+ */
+ srlx %g5, 32, %g2
+ sethi %hi(_PAGE_ALL_SZ_BITS >> 32), %g4
+ sethi %hi(_PAGE_SZBITS >> 32), %g7
+ and %g2, %g4, %g2
+ cmp %g2, %g7
+ bne,a,pn %xcc, tsb_tlb_reload
+ stx %g0, [%g1]
+
TSB_WRITE(%g1, %g5, %g6)
/* Finally, load TLB and return from trap. */