On 22.11.19 15:00, Janosch Frank wrote: > Let's move the intial reset into the reset handler and cleanup > afterwards. > > Signed-off-by: Janosch Frank <fran...@linux.ibm.com> > --- > target/s390x/cpu-qom.h | 2 +- > target/s390x/cpu.c | 44 +++++++++++++++--------------------------- > target/s390x/cpu.h | 2 +- > target/s390x/sigp.c | 2 +- > 4 files changed, 19 insertions(+), 31 deletions(-) > > diff --git a/target/s390x/cpu-qom.h b/target/s390x/cpu-qom.h > index f3b71bac67..6f0a12042e 100644 > --- a/target/s390x/cpu-qom.h > +++ b/target/s390x/cpu-qom.h > @@ -36,6 +36,7 @@ typedef struct S390CPUDef S390CPUDef; > > typedef enum cpu_reset_type { > S390_CPU_RESET_NORMAL, > + S390_CPU_RESET_INITIAL, > } cpu_reset_type; > > /** > @@ -62,7 +63,6 @@ typedef struct S390CPUClass { > void (*parent_reset)(CPUState *cpu); > void (*load_normal)(CPUState *cpu); > void (*reset)(CPUState *cpu, cpu_reset_type type); > - void (*initial_cpu_reset)(CPUState *cpu); > } S390CPUClass; > > typedef struct S390CPU S390CPU; > diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c > index cf13472472..1f423fb676 100644 > --- a/target/s390x/cpu.c > +++ b/target/s390x/cpu.c > @@ -94,37 +94,26 @@ static void s390_cpu_reset(CPUState *s, cpu_reset_type > type) > s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu); > > switch (type) { > + case S390_CPU_RESET_INITIAL: > + /* initial reset does not clear everything! */ > + memset(&env->start_initial_reset_fields, 0, > + offsetof(CPUS390XState, end_reset_fields) - > + offsetof(CPUS390XState, start_initial_reset_fields)); > + > + /* architectured initial value for Breaking-Event-Address register */ > + env->gbea = 1; > + > + /* architectured initial values for CR 0 and 14 */ > + env->cregs[0] = CR0_RESET; > + env->cregs[14] = CR14_RESET; > + > + /* tininess for underflow is detected before rounding */ > + set_float_detect_tininess(float_tininess_before_rounding, > + &env->fpu_status);
/* fall through */ > case S390_CPU_RESET_NORMAL: > env->pfault_token = -1UL; > env->bpbc = false; > - break; > } Removing the break here seems strange. I guess this belongs to another patch. Apart from that Reviewed-by: David Hildenbrand <da...@redhat.com> -- Thanks, David / dhildenb