aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2021-09-03 17:55:04 +0200
committerThomas Huth <thuth@redhat.com>2021-09-06 16:24:05 +0200
commit06d8a10a70b7ef14ebf88b874858f73f2dee1109 (patch)
tree36bc58ae63bcdb7c7ef1e1ee7d8d0d8dae72bf3d
parentfe00c705fec7bf20f5832fd6d8245fd554097cfc (diff)
downloadqemu-06d8a10a70b7ef14ebf88b874858f73f2dee1109.zip
qemu-06d8a10a70b7ef14ebf88b874858f73f2dee1109.tar.gz
qemu-06d8a10a70b7ef14ebf88b874858f73f2dee1109.tar.bz2
s390x/tcg: convert real to absolute address for RRBE, SSKE and ISKE
For RRBE, SSKE, and ISKE, we're dealing with real addresses, so we have to convert to an absolute address first. In the future, when adding EDAT1 support, we'll have to pay attention to SSKE handling, as we'll be dealing with absolute addresses when the multiple-block control is one. Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-Id: <20210903155514.44772-4-david@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
-rw-r--r--target/s390x/tcg/mem_helper.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c
index 3c0820d..dd506d8 100644
--- a/target/s390x/tcg/mem_helper.c
+++ b/target/s390x/tcg/mem_helper.c
@@ -2177,6 +2177,7 @@ uint64_t HELPER(iske)(CPUS390XState *env, uint64_t r2)
uint64_t addr = wrap_address(env, r2);
uint8_t key;
+ addr = mmu_real2abs(env, addr);
if (addr > ms->ram_size) {
return 0;
}
@@ -2201,6 +2202,7 @@ void HELPER(sske)(CPUS390XState *env, uint64_t r1, uint64_t r2)
uint64_t addr = wrap_address(env, r2);
uint8_t key;
+ addr = mmu_real2abs(env, addr);
if (addr > ms->ram_size) {
return;
}
@@ -2228,6 +2230,7 @@ uint32_t HELPER(rrbe)(CPUS390XState *env, uint64_t r2)
static S390SKeysClass *skeyclass;
uint8_t re, key;
+ addr = mmu_real2abs(env, addr);
if (addr > ms->ram_size) {
return 0;
}