From 5efc27bbb695017a7386cb9acef247b9dd29f2b6 Mon Sep 17 00:00:00 2001 From: bellard Date: Wed, 4 Jun 2008 13:35:58 +0000 Subject: EFER loading fixes, including SVME bit git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4659 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-i386/exec.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'target-i386/exec.h') diff --git a/target-i386/exec.h b/target-i386/exec.h index 90b82f3975..035881ec6c 100644 --- a/target-i386/exec.h +++ b/target-i386/exec.h @@ -397,3 +397,14 @@ static inline int cpu_halted(CPUState *env) { return EXCP_HALTED; } +/* load efer and update the corresponding hflags. XXX: do consistency + checks with cpuid bits ? */ +static inline void cpu_load_efer(CPUState *env, uint64_t val) +{ + env->efer = val; + env->hflags &= ~(HF_LMA_MASK | HF_SVME_MASK); + if (env->efer & MSR_EFER_LMA) + env->hflags |= HF_LMA_MASK; + if (env->efer & MSR_EFER_SVME) + env->hflags |= HF_SVME_MASK; +} -- cgit v1.2.3