Revision 0a032cbe target-ppc/op_helper.c
b/target-ppc/op_helper.c | ||
---|---|---|
2256 | 2256 |
/* TLB invalidation helpers */ |
2257 | 2257 |
void do_tlbia (void) |
2258 | 2258 |
{ |
2259 |
if (unlikely(PPC_MMU(env) == PPC_FLAGS_MMU_SOFT_6xx)) { |
|
2260 |
ppc6xx_tlb_invalidate_all(env); |
|
2261 |
} else if (unlikely(PPC_MMU(env) == PPC_FLAGS_MMU_SOFT_4xx)) { |
|
2262 |
/* XXX: TODO */ |
|
2263 |
#if 0 |
|
2264 |
ppcbooke_tlb_invalidate_all(env); |
|
2265 |
#endif |
|
2266 |
} else { |
|
2267 |
tlb_flush(env, 1); |
|
2268 |
} |
|
2259 |
ppc_tlb_invalidate_all(env); |
|
2269 | 2260 |
} |
2270 | 2261 |
|
2271 | 2262 |
void do_tlbie (void) |
... | ... | |
2473 | 2464 |
} |
2474 | 2465 |
|
2475 | 2466 |
/* Helpers for 4xx TLB management */ |
2476 |
void do_4xx_tlbia (void) |
|
2477 |
{ |
|
2478 |
ppcemb_tlb_t *tlb; |
|
2479 |
int i; |
|
2480 |
|
|
2481 |
for (i = 0; i < 64; i++) { |
|
2482 |
tlb = &env->tlb[i].tlbe; |
|
2483 |
if (tlb->prot & PAGE_VALID) { |
|
2484 |
#if 0 |
|
2485 |
end = tlb->EPN + tlb->size; |
|
2486 |
for (page = tlb->EPN; page < end; page += TARGET_PAGE_SIZE) |
|
2487 |
tlb_flush_page(env, page); |
|
2488 |
#endif |
|
2489 |
tlb->prot &= ~PAGE_VALID; |
|
2490 |
} |
|
2491 |
} |
|
2492 |
tlb_flush(env, 1); |
|
2493 |
} |
|
2494 |
|
|
2495 | 2467 |
void do_4xx_tlbre_lo (void) |
2496 | 2468 |
{ |
2497 | 2469 |
ppcemb_tlb_t *tlb; |
Also available in: Unified diff