Commit b3180cdc0195c14d8f01971010b920ef98b35bc3
1 parent
41625033
MMU fix (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1390 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
3 additions
and
3 deletions
target-sparc/helper.c
| @@ -142,7 +142,7 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot | @@ -142,7 +142,7 @@ int get_physical_address (CPUState *env, target_phys_addr_t *physical, int *prot | ||
| 142 | 142 | ||
| 143 | /* SPARC reference MMU table walk: Context table->L1->L2->PTE */ | 143 | /* SPARC reference MMU table walk: Context table->L1->L2->PTE */ |
| 144 | /* Context base + context number */ | 144 | /* Context base + context number */ |
| 145 | - pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 4); | 145 | + pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2); |
| 146 | pde = ldl_phys(pde_ptr); | 146 | pde = ldl_phys(pde_ptr); |
| 147 | 147 | ||
| 148 | /* Ctx pde */ | 148 | /* Ctx pde */ |
| @@ -356,7 +356,7 @@ target_ulong mmu_probe(target_ulong address, int mmulev) | @@ -356,7 +356,7 @@ target_ulong mmu_probe(target_ulong address, int mmulev) | ||
| 356 | uint32_t pde; | 356 | uint32_t pde; |
| 357 | 357 | ||
| 358 | /* Context base + context number */ | 358 | /* Context base + context number */ |
| 359 | - pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 4); | 359 | + pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2); |
| 360 | pde = ldl_phys(pde_ptr); | 360 | pde = ldl_phys(pde_ptr); |
| 361 | 361 | ||
| 362 | switch (pde & PTE_ENTRYTYPE_MASK) { | 362 | switch (pde & PTE_ENTRYTYPE_MASK) { |
| @@ -421,7 +421,7 @@ void dump_mmu(void) | @@ -421,7 +421,7 @@ void dump_mmu(void) | ||
| 421 | uint32_t pde; | 421 | uint32_t pde; |
| 422 | 422 | ||
| 423 | printf("MMU dump:\n"); | 423 | printf("MMU dump:\n"); |
| 424 | - pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 4); | 424 | + pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2); |
| 425 | pde = ldl_phys(pde_ptr); | 425 | pde = ldl_phys(pde_ptr); |
| 426 | printf("Root ptr: " TARGET_FMT_lx ", ctx: %d\n", env->mmuregs[1] << 4, env->mmuregs[2]); | 426 | printf("Root ptr: " TARGET_FMT_lx ", ctx: %d\n", env->mmuregs[1] << 4, env->mmuregs[2]); |
| 427 | for (n = 0, va = 0; n < 256; n++, va += 16 * 1024 * 1024) { | 427 | for (n = 0, va = 0; n < 256; n++, va += 16 * 1024 * 1024) { |