aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sparc64')
-rw-r--r--include/asm-sparc64/tsb.h8
-rw-r--r--include/asm-sparc64/ttable.h12
2 files changed, 14 insertions, 6 deletions
diff --git a/include/asm-sparc64/tsb.h b/include/asm-sparc64/tsb.h
index 7f3abc32c4dd..6e6768067e38 100644
--- a/include/asm-sparc64/tsb.h
+++ b/include/asm-sparc64/tsb.h
@@ -12,6 +12,8 @@
12 * 12 *
13 * ldxa [%g0] ASI_{D,I}MMU_TSB_8KB_PTR, %g1 13 * ldxa [%g0] ASI_{D,I}MMU_TSB_8KB_PTR, %g1
14 * ldxa [%g0] ASI_{D,I}MMU, %g6 14 * ldxa [%g0] ASI_{D,I}MMU, %g6
15 * sllx %g6, 22, %g6
16 * srlx %g6, 22, %g6
15 * ldda [%g1] ASI_NUCLEUS_QUAD_LDD, %g4 17 * ldda [%g1] ASI_NUCLEUS_QUAD_LDD, %g4
16 * cmp %g4, %g6 18 * cmp %g4, %g6
17 * bne,pn %xcc, tsb_miss_{d,i}tlb 19 * bne,pn %xcc, tsb_miss_{d,i}tlb
@@ -29,6 +31,9 @@
29 * ------------------------------------------------- 31 * -------------------------------------------------
30 * 63 61 60 48 47 42 41 0 32 * 63 61 60 48 47 42 41 0
31 * 33 *
34 * But actually, since we use per-mm TSB's, we zero out the CONTEXT
35 * field.
36 *
32 * Like the powerpc hashtables we need to use locking in order to 37 * Like the powerpc hashtables we need to use locking in order to
33 * synchronize while we update the entries. PTE updates need locking 38 * synchronize while we update the entries. PTE updates need locking
34 * as well. 39 * as well.
@@ -42,6 +47,9 @@
42#define TSB_TAG_LOCK_BIT 47 47#define TSB_TAG_LOCK_BIT 47
43#define TSB_TAG_LOCK_HIGH (1 << (TSB_TAG_LOCK_BIT - 32)) 48#define TSB_TAG_LOCK_HIGH (1 << (TSB_TAG_LOCK_BIT - 32))
44 49
50#define TSB_TAG_INVALID_BIT 46
51#define TSB_TAG_INVALID_HIGH (1 << (TSB_TAG_INVALID_BIT - 32))
52
45#define TSB_MEMBAR membar #StoreStore 53#define TSB_MEMBAR membar #StoreStore
46 54
47/* Some cpus support physical address quad loads. We want to use 55/* Some cpus support physical address quad loads. We want to use
diff --git a/include/asm-sparc64/ttable.h b/include/asm-sparc64/ttable.h
index 9e28b240f3aa..2d5e3c464df5 100644
--- a/include/asm-sparc64/ttable.h
+++ b/include/asm-sparc64/ttable.h
@@ -184,20 +184,20 @@
184 ldxa [%g0] ASI_SCRATCHPAD, %g2; \ 184 ldxa [%g0] ASI_SCRATCHPAD, %g2; \
185 ldx [%g2 + HV_FAULT_I_ADDR_OFFSET], %g4; \ 185 ldx [%g2 + HV_FAULT_I_ADDR_OFFSET], %g4; \
186 ldx [%g2 + HV_FAULT_I_CTX_OFFSET], %g5; \ 186 ldx [%g2 + HV_FAULT_I_CTX_OFFSET], %g5; \
187 srlx %g4, 22, %g7; \ 187 srlx %g4, 22, %g6; \
188 sllx %g5, 48, %g6; \
189 ba,pt %xcc, sun4v_itsb_miss; \ 188 ba,pt %xcc, sun4v_itsb_miss; \
190 or %g6, %g7, %g6; \ 189 nop; \
190 nop; \
191 nop; 191 nop;
192 192
193#define SUN4V_DTSB_MISS \ 193#define SUN4V_DTSB_MISS \
194 ldxa [%g0] ASI_SCRATCHPAD, %g2; \ 194 ldxa [%g0] ASI_SCRATCHPAD, %g2; \
195 ldx [%g2 + HV_FAULT_D_ADDR_OFFSET], %g4; \ 195 ldx [%g2 + HV_FAULT_D_ADDR_OFFSET], %g4; \
196 ldx [%g2 + HV_FAULT_D_CTX_OFFSET], %g5; \ 196 ldx [%g2 + HV_FAULT_D_CTX_OFFSET], %g5; \
197 srlx %g4, 22, %g7; \ 197 srlx %g4, 22, %g6; \
198 sllx %g5, 48, %g6; \
199 ba,pt %xcc, sun4v_dtsb_miss; \ 198 ba,pt %xcc, sun4v_dtsb_miss; \
200 or %g6, %g7, %g6; \ 199 nop; \
200 nop; \
201 nop; 201 nop;
202 202
203/* Before touching these macros, you owe it to yourself to go and 203/* Before touching these macros, you owe it to yourself to go and