Changes in kernel/arch/sparc64/src/mm/sun4u/tlb.c [d70ebffe:346b12a2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/mm/sun4u/tlb.c
rd70ebffe r346b12a2 197 197 { 198 198 size_t index = (istate->tpc >> MMU_PAGE_WIDTH) % MMU_PAGES_PER_PAGE; 199 pte_t *t;200 201 t = page_mapping_find(AS, istate->tpc, true);202 if ( t && PTE_EXECUTABLE(t)) {199 pte_t t; 200 201 bool found = page_mapping_find(AS, istate->tpc, true, &t); 202 if (found && PTE_EXECUTABLE(&t)) { 203 203 /* 204 204 * The mapping was found in the software page hash table. 205 205 * Insert it into ITLB. 206 206 */ 207 t ->a = true;208 itlb_pte_copy( t, index);207 t.a = true; 208 itlb_pte_copy(&t, index); 209 209 #ifdef CONFIG_TSB 210 itsb_pte_copy(t, index); 211 #endif 210 itsb_pte_copy(&t, index); 211 #endif 212 page_mapping_update(AS, istate->tpc, true, &t); 212 213 } else { 213 214 /* … … 233 234 uintptr_t page_16k; 234 235 size_t index; 235 pte_t *t;236 pte_t t; 236 237 as_t *as = AS; 237 238 … … 253 254 } 254 255 255 t = page_mapping_find(as, page_16k, true);256 if ( t) {256 bool found = page_mapping_find(as, page_16k, true, &t); 257 if (found) { 257 258 /* 258 259 * The mapping was found in the software page hash table. 259 260 * Insert it into DTLB. 260 261 */ 261 t ->a = true;262 dtlb_pte_copy( t, index, true);262 t.a = true; 263 dtlb_pte_copy(&t, index, true); 263 264 #ifdef CONFIG_TSB 264 dtsb_pte_copy(t, index, true); 265 #endif 265 dtsb_pte_copy(&t, index, true); 266 #endif 267 page_mapping_update(as, page_16k, true, &t); 266 268 } else { 267 269 /* … … 283 285 uintptr_t page_16k; 284 286 size_t index; 285 pte_t *t;287 pte_t t; 286 288 as_t *as = AS; 287 289 … … 293 295 as = AS_KERNEL; 294 296 295 t = page_mapping_find(as, page_16k, true);296 if ( t && PTE_WRITABLE(t)) {297 bool found = page_mapping_find(as, page_16k, true, &t); 298 if (found && PTE_WRITABLE(&t)) { 297 299 /* 298 300 * The mapping was found in the software page hash table and is … … 300 302 * into DTLB. 301 303 */ 302 t ->a = true;303 t ->d = true;304 t.a = true; 305 t.d = true; 304 306 dtlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_SECONDARY, 305 307 page_16k + index * MMU_PAGE_SIZE); 306 dtlb_pte_copy( t, index, false);308 dtlb_pte_copy(&t, index, false); 307 309 #ifdef CONFIG_TSB 308 dtsb_pte_copy(t, index, false); 309 #endif 310 dtsb_pte_copy(&t, index, false); 311 #endif 312 page_mapping_update(as, page_16k, true, &t); 310 313 } else { 311 314 /*
Note:
See TracChangeset
for help on using the changeset viewer.