summaryrefslogtreecommitdiffstats
path: root/target
diff options
context:
space:
mode:
authorDavid Hildenbrand2019-08-16 10:47:04 +0200
committerCornelia Huck2019-08-22 14:53:49 +0200
commitc36709e45d5f636bcdf6bfb78f95e27260018ef5 (patch)
treeb99a40266d4da9d088644f573827ab5b423846ba /target
parents390x/mmu: Trace the right value if setting/getting the storage key fails (diff)
downloadqemu-c36709e45d5f636bcdf6bfb78f95e27260018ef5.tar.gz
qemu-c36709e45d5f636bcdf6bfb78f95e27260018ef5.tar.xz
qemu-c36709e45d5f636bcdf6bfb78f95e27260018ef5.zip
s390x/mmu: ASC selection in s390_cpu_get_phys_page_debug()
Let's select the ASC before calling the function. This is a prepararion to remove the ASC magic depending on the access mode from mmu_translate. There is currently no way to distinguish if we have code or data access. For now, we were using code access, because especially when debugging with the gdbstub, we want to read and disassemble what we single-step. Note: KVM guest can now no longer be crashed using qmp/hmp/gdbstub if they happen to be in AR mode. Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20190816084708.602-3-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'target')
-rw-r--r--target/s390x/helper.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/target/s390x/helper.c b/target/s390x/helper.c
index 1350ad319a..948c0398d4 100644
--- a/target/s390x/helper.c
+++ b/target/s390x/helper.c
@@ -58,6 +58,11 @@ hwaddr s390_cpu_get_phys_page_debug(CPUState *cs, vaddr vaddr)
vaddr &= 0x7fffffff;
}
+ /* We want to read the code (e.g., see what we are single-stepping).*/
+ if (asc != PSW_ASC_HOME) {
+ asc = PSW_ASC_PRIMARY;
+ }
+
if (mmu_translate(env, vaddr, MMU_INST_FETCH, asc, &raddr, &prot, false)) {
return -1;
}