aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/tcg/excp_helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/s390x/tcg/excp_helper.c')
-rw-r--r--target/s390x/tcg/excp_helper.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/target/s390x/tcg/excp_helper.c b/target/s390x/tcg/excp_helper.c
index f969850..0ae4e26 100644
--- a/target/s390x/tcg/excp_helper.c
+++ b/target/s390x/tcg/excp_helper.c
@@ -23,12 +23,14 @@
#include "cpu.h"
#include "exec/helper-proto.h"
#include "exec/cputlb.h"
-#include "exec/exec-all.h"
+#include "exec/target_page.h"
+#include "exec/watchpoint.h"
#include "s390x-internal.h"
#include "tcg_s390x.h"
#ifndef CONFIG_USER_ONLY
#include "qemu/timer.h"
-#include "exec/address-spaces.h"
+#include "system/address-spaces.h"
+#include "system/memory.h"
#include "hw/s390x/ioinst.h"
#include "hw/s390x/s390_flic.h"
#include "hw/boards.h"
@@ -283,7 +285,7 @@ static void do_program_interrupt(CPUS390XState *env)
addr = be64_to_cpu(lowcore->program_new_psw.addr);
lowcore->per_breaking_event_addr = cpu_to_be64(env->gbea);
- cpu_unmap_lowcore(lowcore);
+ cpu_unmap_lowcore(env, lowcore);
s390_cpu_set_psw(env, mask, addr);
}
@@ -302,7 +304,7 @@ static void do_svc_interrupt(CPUS390XState *env)
mask = be64_to_cpu(lowcore->svc_new_psw.mask);
addr = be64_to_cpu(lowcore->svc_new_psw.addr);
- cpu_unmap_lowcore(lowcore);
+ cpu_unmap_lowcore(env, lowcore);
s390_cpu_set_psw(env, mask, addr);
@@ -376,7 +378,7 @@ static void do_ext_interrupt(CPUS390XState *env)
lowcore->external_old_psw.mask = cpu_to_be64(s390_cpu_get_psw_mask(env));
lowcore->external_old_psw.addr = cpu_to_be64(env->psw.addr);
- cpu_unmap_lowcore(lowcore);
+ cpu_unmap_lowcore(env, lowcore);
s390_cpu_set_psw(env, mask, addr);
}
@@ -403,7 +405,7 @@ static void do_io_interrupt(CPUS390XState *env)
mask = be64_to_cpu(lowcore->io_new_psw.mask);
addr = be64_to_cpu(lowcore->io_new_psw.addr);
- cpu_unmap_lowcore(lowcore);
+ cpu_unmap_lowcore(env, lowcore);
g_free(io);
s390_cpu_set_psw(env, mask, addr);
@@ -417,16 +419,18 @@ QEMU_BUILD_BUG_ON(sizeof(MchkExtSaveArea) != 1024);
static int mchk_store_vregs(CPUS390XState *env, uint64_t mcesao)
{
+ const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
+ AddressSpace *as = env_cpu(env)->as;
hwaddr len = sizeof(MchkExtSaveArea);
MchkExtSaveArea *sa;
int i;
- sa = cpu_physical_memory_map(mcesao, &len, true);
+ sa = address_space_map(as, mcesao, &len, true, attrs);
if (!sa) {
return -EFAULT;
}
if (len != sizeof(MchkExtSaveArea)) {
- cpu_physical_memory_unmap(sa, len, 1, 0);
+ address_space_unmap(as, sa, len, true, 0);
return -EFAULT;
}
@@ -435,7 +439,7 @@ static int mchk_store_vregs(CPUS390XState *env, uint64_t mcesao)
sa->vregs[i][1] = cpu_to_be64(env->vregs[i][1]);
}
- cpu_physical_memory_unmap(sa, len, 1, len);
+ address_space_unmap(as, sa, len, true, len);
return 0;
}
@@ -487,7 +491,7 @@ static void do_mchk_interrupt(CPUS390XState *env)
mask = be64_to_cpu(lowcore->mcck_new_psw.mask);
addr = be64_to_cpu(lowcore->mcck_new_psw.addr);
- cpu_unmap_lowcore(lowcore);
+ cpu_unmap_lowcore(env, lowcore);
s390_cpu_set_psw(env, mask, addr);
}
@@ -558,7 +562,7 @@ try_deliver:
/* we might still have pending interrupts, but not deliverable */
if (!env->pending_int && !qemu_s390_flic_has_any(flic)) {
- cs->interrupt_request &= ~CPU_INTERRUPT_HARD;
+ cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
}
/* WAIT PSW during interrupt injection or STOP interrupt */