diff --git a/target-cris/helper.c b/target-cris/helper.c index 83b25c14da..2a4403b847 100644 --- a/target-cris/helper.c +++ b/target-cris/helper.c @@ -101,7 +101,7 @@ int cpu_cris_handle_mmu_fault (CPUState *env, target_ulong address, int rw, phy = res.phy & ~0x80000000; prot = res.prot; tlb_set_page(env, address & TARGET_PAGE_MASK, phy, - prot | PAGE_EXEC, mmu_idx, TARGET_PAGE_SIZE); + prot, mmu_idx, TARGET_PAGE_SIZE); r = 0; } if (r > 0) diff --git a/target-cris/mmu.c b/target-cris/mmu.c index 3f290ba9e0..1243745598 100644 --- a/target-cris/mmu.c +++ b/target-cris/mmu.c @@ -251,7 +251,7 @@ static int cris_mmu_translate_page(struct cris_mmu_result *res, res->prot |= PAGE_READ; if (tlb_w) res->prot |= PAGE_WRITE; - if (tlb_x) + if (mmu == 0 && (cfg_x || tlb_x)) res->prot |= PAGE_EXEC; } else