Message ID | 1519914173-31868-1-git-send-email-frederic.konrad@adacore.com |
---|---|
State | New |
Headers | show |
Series | [RFC] sparc: fix leon3 casa instruction when MMU is disabled | expand |
On 03/01/2018 06:22 AM, KONRAD Frederic wrote: > There is an other way to do that: emiting the instruction with a > MMU_PHYS_IDX when the MMU is disabled. I can switch to that if it's a > prefered method. Yes, that would be preferred. r~
diff --git a/target/sparc/mmu_helper.c b/target/sparc/mmu_helper.c index f8886ae..3cebf50 100644 --- a/target/sparc/mmu_helper.c +++ b/target/sparc/mmu_helper.c @@ -100,7 +100,7 @@ static int get_physical_address(CPUSPARCState *env, hwaddr *physical, is_user = mmu_idx == MMU_USER_IDX; - if (mmu_idx == MMU_PHYS_IDX) { + if ((mmu_idx == MMU_PHYS_IDX) || ((env->mmuregs[0] & MMU_E) == 0)) { *page_size = TARGET_PAGE_SIZE; /* Boot mode: instruction fetches are taken from PROM */ if (rw == 2 && (env->mmuregs[0] & env->def.mmu_bm)) {
Since the commit af7a06bac7d3abb2da48ef3277d2a415772d2ae8: `casa [..](10), .., ..` triggers a data access exception when the MMU is disabled. This fixes this wrong behavior. Signed-off-by: KONRAD Frederic <frederic.konrad@adacore.com> --- Notes: There is an other way to do that: emiting the instruction with a MMU_PHYS_IDX when the MMU is disabled. I can switch to that if it's a prefered method. target/sparc/mmu_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)