int size, int count);
void (*simulate_rdmsr)(CPUState *cs);
void (*simulate_wrmsr)(CPUState *cs);
+ bool (*is_protected_mode)(CPUState *cpu);
+ bool (*is_long_mode)(CPUState *cpu);
+ bool (*is_user_mode)(CPUState *cpu);
};
extern const struct x86_emul_ops *emul_ops;
X86CPU *x86_cpu = X86_CPU(cpu);
CPUX86State *env = &x86_cpu->env;
uint64_t cr0 = env->cr[0];
+ if (emul_ops->is_protected_mode) {
+ return emul_ops->is_protected_mode(cpu);
+ }
return cr0 & CR0_PE_MASK;
}
uint64_t efer = env->efer;
uint64_t lme_lma = (MSR_EFER_LME | MSR_EFER_LMA);
+ if (emul_ops->is_long_mode) {
+ return emul_ops->is_long_mode(cpu);
+ }
return ((efer & lme_lma) == lme_lma);
}