Rev 4129 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4129 | Rev 4433 | ||
---|---|---|---|
Line 69... | Line 69... | ||
69 | cnt = TSB_ENTRY_COUNT; |
69 | cnt = TSB_ENTRY_COUNT; |
70 | else |
70 | else |
71 | cnt = pages; |
71 | cnt = pages; |
72 | 72 | ||
73 | for (i = 0; i < cnt; i++) { |
73 | for (i = 0; i < cnt; i++) { |
74 | ((tsb_entry_t *) as->arch.tsb_description.tsb_base)[ |
74 | ((tsb_entry_t *) PA2KA(as->arch.tsb_description.tsb_base))[ |
75 | (i0 + i) & (TSB_ENTRY_COUNT - 1)].data.v = false; |
75 | (i0 + i) & (TSB_ENTRY_COUNT - 1)].data.v = false; |
76 | } |
76 | } |
77 | } |
77 | } |
78 | 78 | ||
79 | /** Copy software PTE to ITSB. |
79 | /** Copy software PTE to ITSB. |
Line 87... | Line 87... | ||
87 | index_t entry; |
87 | index_t entry; |
88 | 88 | ||
89 | as = t->as; |
89 | as = t->as; |
90 | entry = (t->page >> MMU_PAGE_WIDTH) & TSB_INDEX_MASK; |
90 | entry = (t->page >> MMU_PAGE_WIDTH) & TSB_INDEX_MASK; |
91 | ASSERT(entry < TSB_ENTRY_COUNT); |
91 | ASSERT(entry < TSB_ENTRY_COUNT); |
92 | tsb = &((tsb_entry_t *) as->arch.tsb_description.tsb_base)[entry]; |
92 | tsb = &((tsb_entry_t *) PA2KA(as->arch.tsb_description.tsb_base))[entry]; |
93 | 93 | ||
94 | /* |
94 | /* |
95 | * We use write barriers to make sure that the TSB load |
95 | * We use write barriers to make sure that the TSB load |
96 | * won't use inconsistent data or that the fault will |
96 | * won't use inconsistent data or that the fault will |
97 | * be repeated. |
97 | * be repeated. |
Line 99... | Line 99... | ||
99 | 99 | ||
100 | tsb->data.v = false; |
100 | tsb->data.v = false; |
101 | 101 | ||
102 | write_barrier(); |
102 | write_barrier(); |
103 | 103 | ||
104 | tsb->tag.context = as->asid; |
- | |
105 | tsb->tag.va_tag = t->page >> VA_TAG_PAGE_SHIFT; |
104 | tsb->tag.va_tag = t->page >> VA_TAG_PAGE_SHIFT; |
106 | 105 | ||
107 | tsb->data.value = 0; |
106 | tsb->data.value = 0; |
108 | tsb->data.nfo = false; |
107 | tsb->data.nfo = false; |
109 | tsb->data.ra = t->frame >> MMU_FRAME_WIDTH; |
108 | tsb->data.ra = t->frame >> MMU_FRAME_WIDTH; |
Line 133... | Line 132... | ||
133 | index_t entry; |
132 | index_t entry; |
134 | 133 | ||
135 | as = t->as; |
134 | as = t->as; |
136 | entry = (t->page >> MMU_PAGE_WIDTH) & TSB_INDEX_MASK; |
135 | entry = (t->page >> MMU_PAGE_WIDTH) & TSB_INDEX_MASK; |
137 | ASSERT(entry < TSB_ENTRY_COUNT); |
136 | ASSERT(entry < TSB_ENTRY_COUNT); |
138 | tsb = &((tsb_entry_t *) as->arch.tsb_description.tsb_base)[entry]; |
137 | tsb = &((tsb_entry_t *) PA2KA(as->arch.tsb_description.tsb_base))[entry]; |
139 | 138 | ||
140 | /* |
139 | /* |
141 | * We use write barriers to make sure that the TSB load |
140 | * We use write barriers to make sure that the TSB load |
142 | * won't use inconsistent data or that the fault will |
141 | * won't use inconsistent data or that the fault will |
143 | * be repeated. |
142 | * be repeated. |
Line 145... | Line 144... | ||
145 | 144 | ||
146 | tsb->data.v = false; |
145 | tsb->data.v = false; |
147 | 146 | ||
148 | write_barrier(); |
147 | write_barrier(); |
149 | 148 | ||
150 | tsb->tag.context = as->asid; |
- | |
151 | tsb->tag.va_tag = t->page >> VA_TAG_PAGE_SHIFT; |
149 | tsb->tag.va_tag = t->page >> VA_TAG_PAGE_SHIFT; |
152 | 150 | ||
153 | tsb->data.value = 0; |
151 | tsb->data.value = 0; |
154 | tsb->data.nfo = false; |
152 | tsb->data.nfo = false; |
155 | tsb->data.ra = t->frame >> MMU_FRAME_WIDTH; |
153 | tsb->data.ra = t->frame >> MMU_FRAME_WIDTH; |