[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 09/10] tools/x86emul: Advertise more CPUID features for testing purposes
On 27/03/17 13:09, Jan Beulich wrote: >>>> On 27.03.17 at 11:56, <andrew.cooper3@xxxxxxxxxx> wrote: >> 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 */ > Upper case? I was trying to visually separate the instructions from the features. > >> + res->b |= 1U << 19; /* ADCX/ADOX */ >> + res->b |= 1U << 20; /* STAC/CLAC */ > SMAP? > >> + res->b |= 1U << 24; /* CLWB */ >> + >> + res->c |= 1U << 22; /* RDPID */ >> + break; >> + } >> + break; >> + >> + case 0x80000001: >> + res->c |= 1U << 4; /* cr8_legacy */ > I think this one is AMD-only, just like ... > >> + if ( ctxt->vendor == X86_VENDOR_AMD ) >> + res->c |= 1U << 7; /* misalignsse */ > ... this. The difference is that cr8_legacy is a straight "is this specific encoding valid to use", while misalignsse causes rather larger changes in how SSE arguments get handled. > And what about LAHF_LM, LZCNT, and CLFLUSH{,OPT}? This list was only the instructions I had encountered. I can add all of these. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |