|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 09/10] tools/x86emul: Advertise more CPUID features for testing purposes
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/tests/x86_emulator/x86_emulate.c | 41 ++++++++++++++++++++++++----------
1 file changed, 29 insertions(+), 12 deletions(-)
diff --git a/tools/tests/x86_emulator/x86_emulate.c
b/tools/tests/x86_emulator/x86_emulate.c
index cea0595..2c49954 100644
--- a/tools/tests/x86_emulator/x86_emulate.c
+++ b/tools/tests/x86_emulator/x86_emulate.c
@@ -73,20 +73,37 @@ int emul_test_cpuid(
: "a" (leaf), "c" (subleaf));
/*
- * The emulator doesn't itself use MOVBE, so we can always run the
- * respective tests.
+ * Some instructions and features can be emulated without specific
+ * hardware support. These features are unconditionally reported here,
+ * for testing and fuzzing-coverage purposes.
*/
- if ( leaf == 1 )
- res->c |= 1U << 22;
-
- /*
- * The emulator doesn't itself use ADCX/ADOX/RDPID, so we can always run
- * the respective tests.
- */
- if ( leaf == 7 && subleaf == 0 )
+ switch ( leaf )
{
- res->b |= 1U << 19;
- res->c |= 1U << 22;
+ case 1:
+ res->c |= 1U << 22; /* MOVBE */
+ break;
+
+ case 7:
+ switch ( subleaf )
+ {
+ case 0:
+ res->b |= 1U << 11; /* rtm */
+ res->b |= 1U << 19; /* ADCX/ADOX */
+ res->b |= 1U << 20; /* STAC/CLAC */
+ res->b |= 1U << 24; /* CLWB */
+
+ res->c |= 1U << 22; /* RDPID */
+ break;
+ }
+ break;
+
+ case 0x80000001:
+ res->c |= 1U << 4; /* cr8_legacy */
+
+ if ( ctxt->vendor == X86_VENDOR_AMD )
+ res->c |= 1U << 7; /* misalignsse */
+
+ break;
}
return X86EMUL_OKAY;
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |