diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2015-06-15 17:57:05 +0200 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2015-06-17 12:40:50 +0200 |
commit | cc0d079d4582ee0ed97b5e3e3da4f6cb2b5bd67f (patch) | |
tree | a429cc2e3e20651991ced750adabad7f0d6abb60 /target-s390x/cpu.c | |
parent | 7107e5a756317151666d47d1bc1e170293babaff (diff) |
target-s390x: initialize I/O interrupt queue
env->io_index[] should be set to -1 during CPU reset to mark the
I/O interrupt queue as empty.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-s390x/cpu.c')
-rw-r--r-- | target-s390x/cpu.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c index c4e8a87e1c..cc9cc379cd 100644 --- a/target-s390x/cpu.c +++ b/target-s390x/cpu.c @@ -106,6 +106,7 @@ static void s390_cpu_initial_reset(CPUState *s) { S390CPU *cpu = S390_CPU(s); CPUS390XState *env = &cpu->env; + int i; s390_cpu_reset(s); /* initial reset does not touch regs,fregs and aregs */ @@ -118,6 +119,9 @@ static void s390_cpu_initial_reset(CPUState *s) env->pfault_token = -1UL; env->ext_index = -1; + for (i = 0; i < ARRAY_SIZE(env->io_index); i++) { + env->io_index[i] = -1; + } /* tininess for underflow is detected before rounding */ set_float_detect_tininess(float_tininess_before_rounding, @@ -135,6 +139,7 @@ static void s390_cpu_full_reset(CPUState *s) S390CPU *cpu = S390_CPU(s); S390CPUClass *scc = S390_CPU_GET_CLASS(cpu); CPUS390XState *env = &cpu->env; + int i; scc->parent_reset(s); cpu->env.sigp_order = 0; @@ -148,6 +153,9 @@ static void s390_cpu_full_reset(CPUState *s) env->pfault_token = -1UL; env->ext_index = -1; + for (i = 0; i < ARRAY_SIZE(env->io_index); i++) { + env->io_index[i] = -1; + } /* tininess for underflow is detected before rounding */ set_float_detect_tininess(float_tininess_before_rounding, |