|
From: <sv...@va...> - 2015-06-18 21:31:39
|
Author: philippe
Date: Thu Jun 18 22:31:32 2015
New Revision: 3154
Log:
* x86: on an SSE2 only host, Valgrind in 32 bits now claims to be a Pentium 4.
3.10.1 was wrongly claiming to be a CORE 2, which is SSSE3.
Modified:
trunk/priv/guest_x86_defs.h
trunk/priv/guest_x86_helpers.c
trunk/priv/guest_x86_toIR.c
Modified: trunk/priv/guest_x86_defs.h
==============================================================================
--- trunk/priv/guest_x86_defs.h (original)
+++ trunk/priv/guest_x86_defs.h Thu Jun 18 22:31:32 2015
@@ -147,6 +147,7 @@
extern void x86g_dirtyhelper_CPUID_sse0 ( VexGuestX86State* );
extern void x86g_dirtyhelper_CPUID_mmxext ( VexGuestX86State* );
extern void x86g_dirtyhelper_CPUID_sse1 ( VexGuestX86State* );
+extern void x86g_dirtyhelper_CPUID_sse2 ( VexGuestX86State* );
extern void x86g_dirtyhelper_CPUID_sse3 ( VexGuestX86State* );
extern void x86g_dirtyhelper_FINIT ( VexGuestX86State* );
Modified: trunk/priv/guest_x86_helpers.c
==============================================================================
--- trunk/priv/guest_x86_helpers.c (original)
+++ trunk/priv/guest_x86_helpers.c Thu Jun 18 22:31:32 2015
@@ -2297,6 +2297,46 @@
}
}
+/* Claim to be the following SSE2-capable CPU:
+ vendor_id : GenuineIntel
+ cpu family : 15
+ model : 2
+ model name : Intel(R) Pentium(R) 4 CPU 3.00GHz
+ stepping : 9
+ microcode : 0x17
+ cpu MHz : 2992.577
+ cache size : 512 KB
+ flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
+ pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
+ pebs bts cid xtpr
+ clflush size : 64
+ cache_alignment : 128
+ address sizes : 36 bits physical, 32 bits virtual
+*/
+void x86g_dirtyhelper_CPUID_sse2 ( VexGuestX86State* st )
+{
+ switch (st->guest_EAX) {
+ case 0:
+ st->guest_EAX = 0x00000002;
+ st->guest_EBX = 0x756e6547;
+ st->guest_ECX = 0x6c65746e;
+ st->guest_EDX = 0x49656e69;
+ break;
+ case 1:
+ st->guest_EAX = 0x00000f29;
+ st->guest_EBX = 0x01020809;
+ st->guest_ECX = 0x00004400;
+ st->guest_EDX = 0xbfebfbff;
+ break;
+ default:
+ st->guest_EAX = 0x03020101;
+ st->guest_EBX = 0x00000000;
+ st->guest_ECX = 0x00000000;
+ st->guest_EDX = 0x0c040883;
+ break;
+ }
+}
+
/* Claim to be the following SSSE3-capable CPU (2 x ...):
vendor_id : GenuineIntel
cpu family : 6
Modified: trunk/priv/guest_x86_toIR.c
==============================================================================
--- trunk/priv/guest_x86_toIR.c (original)
+++ trunk/priv/guest_x86_toIR.c Thu Jun 18 22:31:32 2015
@@ -14847,6 +14847,11 @@
fAddr = &x86g_dirtyhelper_CPUID_sse3;
}
else
+ if (archinfo->hwcaps & VEX_HWCAPS_X86_SSE2) {
+ fName = "x86g_dirtyhelper_CPUID_sse2";
+ fAddr = &x86g_dirtyhelper_CPUID_sse2;
+ }
+ else
if (archinfo->hwcaps & VEX_HWCAPS_X86_SSE1) {
fName = "x86g_dirtyhelper_CPUID_sse1";
fAddr = &x86g_dirtyhelper_CPUID_sse1;
|