summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64/tsb.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2006-01-31 18:33:49 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 01:11:26 -0800
commit2f7ee7c63f08b7f883b710a29d91c1891b81b8e1 (patch)
treec0539482cecfd3cbc0b983a23058315811dc8b55 /include/asm-sparc64/tsb.h
parenta8b900d801697609d1b56cc9c110148c64678068 (diff)
downloadlinux-2f7ee7c63f08b7f883b710a29d91c1891b81b8e1.tar.gz
linux-2f7ee7c63f08b7f883b710a29d91c1891b81b8e1.tar.bz2
linux-2f7ee7c63f08b7f883b710a29d91c1891b81b8e1.zip
[SPARC64]: Increase swapper_tsb size to 32K.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/asm-sparc64/tsb.h')
-rw-r--r--include/asm-sparc64/tsb.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/include/asm-sparc64/tsb.h b/include/asm-sparc64/tsb.h
index 09ab3aaa8d20..1addd91d7200 100644
--- a/include/asm-sparc64/tsb.h
+++ b/include/asm-sparc64/tsb.h
@@ -143,6 +143,14 @@
add REG1, (3 * 8), REG1; \
99:
+ /* We use a 32K TSB for the whole kernel, this allows to
+ * handle about 16MB of modules and vmalloc mappings without
+ * incurring many hash conflicts.
+ */
+#define KERNEL_TSB_SIZE_BYTES (32 * 1024)
+#define KERNEL_TSB_NENTRIES \
+ (KERNEL_TSB_SIZE_BYTES / 16)
+
/* Do a kernel TSB lookup at tl>0 on VADDR+TAG, branch to OK_LABEL
* on TSB hit. REG1, REG2, REG3, and REG4 are used as temporaries
* and the found TTE will be left in REG1. REG3 and REG4 must
@@ -150,12 +158,11 @@
*
* VADDR and TAG will be preserved and not clobbered by this macro.
*/
- /* XXX non-8K base page size support... */
#define KERN_TSB_LOOKUP_TL1(VADDR, TAG, REG1, REG2, REG3, REG4, OK_LABEL) \
sethi %hi(swapper_tsb), REG1; \
or REG1, %lo(swapper_tsb), REG1; \
- srlx VADDR, 13, REG2; \
- and REG2, (512 - 1), REG2; \
+ srlx VADDR, PAGE_SHIFT, REG2; \
+ and REG2, (KERNEL_TSB_NENTRIES - 1), REG2; \
sllx REG2, 4, REG2; \
add REG1, REG2, REG2; \
ldda [REG2] ASI_NUCLEUS_QUAD_LDD, REG3; \