diff options
Diffstat (limited to 'target-s390x/cpu.h')
-rw-r--r-- | target-s390x/cpu.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h index e351005901..0ce82cf830 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -78,6 +78,11 @@ typedef struct MchkQueue { uint16_t type; } MchkQueue; +/* Defined values for CPUS390XState.runtime_reg_dirty_mask */ +#define KVM_S390_RUNTIME_DIRTY_NONE 0 +#define KVM_S390_RUNTIME_DIRTY_PARTIAL 1 +#define KVM_S390_RUNTIME_DIRTY_FULL 2 + typedef struct CPUS390XState { uint64_t regs[16]; /* GP registers */ CPU_DoubleU fregs[16]; /* FP registers */ @@ -121,6 +126,13 @@ typedef struct CPUS390XState { uint64_t cputm; uint32_t todpr; + /* on S390 the runtime register set has two dirty states: + * a partial dirty state in which only the registers that + * are needed all the time are fetched. And a fully dirty + * state in which all runtime registers are fetched. + */ + uint32_t runtime_reg_dirty_mask; + CPU_COMMON /* reset does memset(0) up to here */ @@ -1068,6 +1080,7 @@ void kvm_s390_io_interrupt(S390CPU *cpu, uint16_t subchannel_id, uint32_t io_int_word); void kvm_s390_crw_mchk(S390CPU *cpu); void kvm_s390_enable_css_support(S390CPU *cpu); +int kvm_s390_get_registers_partial(CPUState *cpu); #else static inline void kvm_s390_io_interrupt(S390CPU *cpu, uint16_t subchannel_id, @@ -1082,6 +1095,10 @@ static inline void kvm_s390_crw_mchk(S390CPU *cpu) static inline void kvm_s390_enable_css_support(S390CPU *cpu) { } +static inline int kvm_s390_get_registers_partial(CPUState *cpu) +{ + return -ENOSYS; +} #endif static inline void s390_io_interrupt(S390CPU *cpu, |