diff options
Diffstat (limited to 'hw/s390x')
-rw-r--r-- | hw/s390x/ipl.c | 6 | ||||
-rw-r--r-- | hw/s390x/s390-virtio.c | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 86e84153ad..206d552e16 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -58,10 +58,12 @@ typedef struct S390IPLState { static void s390_ipl_cpu(uint64_t pswaddr) { - CPUS390XState *env = &S390_CPU(qemu_get_cpu(0))->env; + S390CPU *cpu = S390_CPU(qemu_get_cpu(0)); + CPUS390XState *env = &cpu->env; + env->psw.addr = pswaddr; env->psw.mask = IPL_PSW_MASK; - s390_add_running_cpu(env); + s390_add_running_cpu(cpu); } static int s390_ipl_init(SysBusDevice *dev) diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c index 2a1d9ac2da..e25c330320 100644 --- a/hw/s390x/s390-virtio.c +++ b/hw/s390x/s390-virtio.c @@ -130,8 +130,10 @@ static void s390_virtio_register_hcalls(void) */ static unsigned s390_running_cpus; -void s390_add_running_cpu(CPUS390XState *env) +void s390_add_running_cpu(S390CPU *cpu) { + CPUS390XState *env = &cpu->env; + if (env->halted) { s390_running_cpus++; env->halted = 0; @@ -139,8 +141,10 @@ void s390_add_running_cpu(CPUS390XState *env) } } -unsigned s390_del_running_cpu(CPUS390XState *env) +unsigned s390_del_running_cpu(S390CPU *cpu) { + CPUS390XState *env = &cpu->env; + if (env->halted == 0) { assert(s390_running_cpus >= 1); s390_running_cpus--; |