summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2015-06-15 17:57:05 +0200
committerAlexander Graf <agraf@suse.de>2015-06-17 12:40:50 +0200
commitcc0d079d4582ee0ed97b5e3e3da4f6cb2b5bd67f (patch)
treea429cc2e3e20651991ced750adabad7f0d6abb60
parent7107e5a756317151666d47d1bc1e170293babaff (diff)
downloadqemu-cc0d079d4582ee0ed97b5e3e3da4f6cb2b5bd67f.tar.gz
qemu-cc0d079d4582ee0ed97b5e3e3da4f6cb2b5bd67f.tar.bz2
qemu-cc0d079d4582ee0ed97b5e3e3da4f6cb2b5bd67f.zip
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>
-rw-r--r--target-s390x/cpu.c8
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,