aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/tsb.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-01-31 18:31:06 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 01:11:16 -0800
commit09f94287f7260e03bbeab497e743691fafcc22c3 (patch)
treeebdb365a7cfe25a1587a930d852f2eaa0e1e773a /arch/sparc64/kernel/tsb.S
parent56fb4df6da76c35dca22036174e2d1edef83ff1f (diff)
downloadkernel_samsung_espresso10-09f94287f7260e03bbeab497e743691fafcc22c3.zip
kernel_samsung_espresso10-09f94287f7260e03bbeab497e743691fafcc22c3.tar.gz
kernel_samsung_espresso10-09f94287f7260e03bbeab497e743691fafcc22c3.tar.bz2
[SPARC64]: TSB refinements.
Move {init_new,destroy}_context() out of line. Do not put huge pages into the TSB, only base page size translations. There are some clever things we could do here, but for now let's be correct instead of fancy. Signed-off-by: David S. Miller <davem@davemloft.net>
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 50752c5..76f2c0b 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. */