Changeset 38dc82d in mainline for kernel/arch/sparc64/src/mm/sun4u/tlb.c
- Timestamp:
- 2016-08-31T14:16:45Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 346b12a2
- Parents:
- dc05a9a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/mm/sun4u/tlb.c
rdc05a9a r38dc82d 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);210 itsb_pte_copy(&t, index); 211 211 #endif 212 212 } else { … … 233 233 uintptr_t page_16k; 234 234 size_t index; 235 pte_t *t;235 pte_t t; 236 236 as_t *as = AS; 237 237 … … 253 253 } 254 254 255 t = page_mapping_find(as, page_16k, true);256 if ( t) {255 bool found = page_mapping_find(as, page_16k, true, &t); 256 if (found) { 257 257 /* 258 258 * The mapping was found in the software page hash table. 259 259 * Insert it into DTLB. 260 260 */ 261 t ->a = true;262 dtlb_pte_copy( t, index, true);261 t.a = true; 262 dtlb_pte_copy(&t, index, true); 263 263 #ifdef CONFIG_TSB 264 dtsb_pte_copy( t, index, true);264 dtsb_pte_copy(&t, index, true); 265 265 #endif 266 266 } else { … … 283 283 uintptr_t page_16k; 284 284 size_t index; 285 pte_t *t;285 pte_t t; 286 286 as_t *as = AS; 287 287 … … 293 293 as = AS_KERNEL; 294 294 295 t = page_mapping_find(as, page_16k, true);296 if ( t && PTE_WRITABLE(t)) {295 bool found = page_mapping_find(as, page_16k, true, &t); 296 if (found && PTE_WRITABLE(&t)) { 297 297 /* 298 298 * The mapping was found in the software page hash table and is … … 300 300 * into DTLB. 301 301 */ 302 t ->a = true;303 t ->d = true;302 t.a = true; 303 t.d = true; 304 304 dtlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_SECONDARY, 305 305 page_16k + index * MMU_PAGE_SIZE); 306 dtlb_pte_copy( t, index, false);306 dtlb_pte_copy(&t, index, false); 307 307 #ifdef CONFIG_TSB 308 dtsb_pte_copy( t, index, false);308 dtsb_pte_copy(&t, index, false); 309 309 #endif 310 310 } else {
Note:
See TracChangeset
for help on using the changeset viewer.