Commit cb4f4bc3 authored by Christian Borntraeger's avatar Christian Borntraeger Committed by Cornelia Huck
Browse files

s390/kvm: do not reset riccb on initial cpu reset



The riccb is kept unchanged during initial cpu reset. Move the data
structure to the other registers that are unchanged.

Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
parent 5eb74557
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -92,9 +92,10 @@ static void s390_cpu_initial_reset(CPUState *s)
    int i;

    s390_cpu_reset(s);
    /* initial reset does not touch regs,fregs and aregs */
    memset(&env->fpc, 0, offsetof(CPUS390XState, end_reset_fields) -
                         offsetof(CPUS390XState, fpc));
    /* 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 values for CR 0 and 14 */
    env->cregs[0] = CR0_RESET;
+4 −2
Original line number Diff line number Diff line
@@ -88,6 +88,10 @@ typedef struct CPUS390XState {
     */
    CPU_DoubleU vregs[32][2];  /* vector registers */
    uint32_t aregs[16];    /* access registers */
    uint8_t riccb[64];     /* runtime instrumentation control */

    /* Fields up to this point are not cleared by initial CPU reset */
    struct {} start_initial_reset_fields;

    uint32_t fpc;          /* floating-point control register */
    uint32_t cc_op;
@@ -137,8 +141,6 @@ typedef struct CPUS390XState {
    uint64_t gbea;
    uint64_t pp;

    uint8_t riccb[64];

    /* Fields up to this point are cleared by a CPU reset */
    struct {} end_reset_fields;