diff options
Diffstat (limited to 'arch/sparc64/kernel/tsb.S')
-rw-r--r-- | arch/sparc64/kernel/tsb.S | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/tsb.S b/arch/sparc64/kernel/tsb.S index 50752c518773..76f2c0b01f36 100644 --- a/arch/sparc64/kernel/tsb.S +++ b/arch/sparc64/kernel/tsb.S | |||
@@ -55,6 +55,17 @@ tsb_reload: | |||
55 | brgez,a,pn %g5, tsb_do_fault | 55 | brgez,a,pn %g5, tsb_do_fault |
56 | stx %g0, [%g1] | 56 | stx %g0, [%g1] |
57 | 57 | ||
58 | /* If it is larger than the base page size, don't | ||
59 | * bother putting it into the TSB. | ||
60 | */ | ||
61 | srlx %g5, 32, %g2 | ||
62 | sethi %hi(_PAGE_ALL_SZ_BITS >> 32), %g4 | ||
63 | sethi %hi(_PAGE_SZBITS >> 32), %g7 | ||
64 | and %g2, %g4, %g2 | ||
65 | cmp %g2, %g7 | ||
66 | bne,a,pn %xcc, tsb_tlb_reload | ||
67 | stx %g0, [%g1] | ||
68 | |||
58 | TSB_WRITE(%g1, %g5, %g6) | 69 | TSB_WRITE(%g1, %g5, %g6) |
59 | 70 | ||
60 | /* Finally, load TLB and return from trap. */ | 71 | /* Finally, load TLB and return from trap. */ |