[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v2 3/7] x86emul/test: factor out emul_test_{read_cr, cpuid}
>>> On 09.12.16 at 13:23, <wei.liu2@xxxxxxxxxx> wrote: > --- a/tools/tests/x86_emulator/test_x86_emulator.c > +++ b/tools/tests/x86_emulator/test_x86_emulator.c > @@ -92,51 +92,33 @@ static int cmpxchg( > return X86EMUL_OKAY; > } > > -static int cpuid( > - unsigned int *eax, > - unsigned int *ebx, > - unsigned int *ecx, > - unsigned int *edx, > - struct x86_emulate_ctxt *ctxt) > -{ > - unsigned int leaf = *eax; > - > - asm ("cpuid" : "+a" (*eax), "+c" (*ecx), "=d" (*edx), "=b" (*ebx)); > - > - /* The emulator doesn't itself use MOVBE, so we can always run the test. > */ > - if ( leaf == 1 ) > - *ecx |= 1U << 22; > - > - return X86EMUL_OKAY; > -} > - > #define cache_line_size() ({ \ > unsigned int eax = 1, ebx, ecx = 0, edx; \ > - cpuid(&eax, &ebx, &ecx, &edx, NULL); \ > + emul_test_cpuid(&eax, &ebx, &ecx, &edx, NULL); \ > edx & (1U << 19) ? (ebx >> 5) & 0x7f8 : 0; \ > }) > > #define cpu_has_mmx ({ \ > unsigned int eax = 1, ecx = 0, edx; \ > - cpuid(&eax, &ecx, &ecx, &edx, NULL); \ > + emul_test_cpuid(&eax, &ecx, &ecx, &edx, NULL); \ > (edx & (1U << 23)) != 0; \ > }) > > #define cpu_has_sse ({ \ > unsigned int eax = 1, ecx = 0, edx; \ > - cpuid(&eax, &ecx, &ecx, &edx, NULL); \ > + emul_test_cpuid(&eax, &ecx, &ecx, &edx, NULL); \ > (edx & (1U << 25)) != 0; \ > }) > > #define cpu_has_sse2 ({ \ > unsigned int eax = 1, ecx = 0, edx; \ > - cpuid(&eax, &ecx, &ecx, &edx, NULL); \ > + emul_test_cpuid(&eax, &ecx, &ecx, &edx, NULL); \ > (edx & (1U << 26)) != 0; \ > }) > > #define cpu_has_xsave ({ \ > unsigned int eax = 1, ecx = 0; \ > - cpuid(&eax, &eax, &ecx, &eax, NULL); \ > + emul_test_cpuid(&eax, &eax, &ecx, &eax, NULL); \ > /* Intentionally checking OSXSAVE here. */ \ > (ecx & (1U << 27)) != 0; \ > }) Hmm, you cpu_has_xsave in place here, but you also ... > --- a/tools/tests/x86_emulator/x86_emulate.h > +++ b/tools/tests/x86_emulator/x86_emulate.h > @@ -37,3 +37,22 @@ > bool emul_test_make_stack_executable(void); > > #include "x86_emulate/x86_emulate.h" > + > +#define cpu_has_xsave ({ \ > + unsigned int eax = 1, ecx = 0; \ > + emul_test_cpuid(&eax, &eax, &ecx, &eax, NULL); \ > + /* Intentionally checking OSXSAVE here. */ \ > + (ecx & (1U << 27)) != 0; \ > +}) ... add it here - why? If you mean to put it here, perhaps all of the cpu_has_* should be moved? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |