From: Andre Przywara Date: Fri, 18 Sep 2009 22:30:47 +0000 (+0200) Subject: target-i386: add lock mov cr0 = cr8 X-Git-Tag: v0.12.0-rc0~963 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ccd59d09a9d0c75b86185b89d8246e40b5f01168;p=users%2Fdwmw2%2Fqemu.git target-i386: add lock mov cr0 = cr8 AMD CPUs featuring a shortcut to access CR8 even from 32-bit mode. If you use the LOCK prefix with "mov CR0", it accesses CR8 instead. This behavior is guarded by the CR8_LEGACY CPUID bit (Fn8000_0001:ECX[1]). Signed-off-by: Andre Przywara Signed-off-by: Aurelien Jarno --- diff --git a/target-i386/translate.c b/target-i386/translate.c index 5b11d7f63e..0f62a97286 100644 --- a/target-i386/translate.c +++ b/target-i386/translate.c @@ -7351,6 +7351,10 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) ot = OT_QUAD; else ot = OT_LONG; + if ((prefixes & PREFIX_LOCK) && (reg == 0) && + (s->cpuid_ext3_features & CPUID_EXT3_CR8LEG)) { + reg = 8; + } switch(reg) { case 0: case 2: