[Qemu-devel] [RFC PATCH] sparc: fix leon3 casa instruction when MMU is disabled

KONRAD Frederic posted 1 patch 7 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1519914173-31868-1-git-send-email-frederic.konrad@adacore.com
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 passed
Test ppcbe passed
Test ppcle passed
Test s390x passed
target/sparc/mmu_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [RFC PATCH] sparc: fix leon3 casa instruction when MMU is disabled
Posted by KONRAD Frederic 7 years, 7 months ago
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(-)

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)) {
-- 
1.8.3.1


Re: [Qemu-devel] [RFC PATCH] sparc: fix leon3 casa instruction when MMU is disabled
Posted by Richard Henderson 7 years, 7 months ago
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~