diff options
author | Blue Swirl <blauwirbel@gmail.com> | 2010-02-14 07:23:50 +0000 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2010-02-14 07:23:50 +0000 |
commit | ee0dc6d3937e10d9813ede4710bdcb9a4687d96f (patch) | |
tree | 73fd9386dbbb86683400171711aa1ce43b5a8457 | |
parent | b5937f297819bec5bf704dda1df9807fc7f0a766 (diff) |
Fix incorrect exception_index use
env->exception_index should be cleared with -1, not 0.
See also 821b19fe923ac49a24cdb4af902584fdd019cee6.
Spotted by Igor Kovalenko.
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r-- | target-alpha/helper.c | 2 | ||||
-rw-r--r-- | target-s390x/kvm.c | 4 | ||||
-rw-r--r-- | target-sh4/helper.c | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/target-alpha/helper.c b/target-alpha/helper.c index be7d37b0d9..1e0bc4a155 100644 --- a/target-alpha/helper.c +++ b/target-alpha/helper.c @@ -467,7 +467,7 @@ void do_interrupt (CPUState *env) env->ipr[IPR_EXC_ADDR] = env->pc | 1; excp = env->exception_index; - env->exception_index = 0; + env->exception_index = -1; env->error_code = 0; /* XXX: disable interrupts and memory mapping */ if (env->ipr[IPR_PAL_BASE] != -1ULL) { diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 0992563924..0199a650f6 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -186,7 +186,7 @@ static void kvm_s390_interrupt_internal(CPUState *env, int type, uint32_t parm, } env->halted = 0; - env->exception_index = 0; + env->exception_index = -1; kvmint.type = type; kvmint.parm = parm; @@ -325,7 +325,7 @@ static int s390_cpu_restart(CPUState *env) { kvm_s390_interrupt(env, KVM_S390_RESTART, 0); env->halted = 0; - env->exception_index = 0; + env->exception_index = -1; qemu_cpu_kick(env); dprintf("DONE: SIGP cpu restart: %p\n", env); return 0; diff --git a/target-sh4/helper.c b/target-sh4/helper.c index f38e6abdaf..d2ff6691e0 100644 --- a/target-sh4/helper.c +++ b/target-sh4/helper.c @@ -38,7 +38,7 @@ int cpu_sh4_handle_mmu_fault(CPUState * env, target_ulong address, int rw, int mmu_idx, int is_softmmu) { env->tea = address; - env->exception_index = 0; + env->exception_index = -1; switch (rw) { case 0: env->exception_index = 0x0a0; |