Alexander Graf wrote:
>
> The ebx store was done because of PIC code, which does not allow ebx
> to get clobbered. If we are not in PIC code, =r contains ebx as GPR
> though, so the assumption that ebx needs to be restored was wrong
> then. This new version only enables the store/restore code if i386 and
> PIC code are used. There is no need to distinguish between x86_64 and
> i386 for the other cases.
>
> So does this version work?
>
It probably will, but it seems fragile to depend on the details of PIC.
I committed something more generic:
#ifdef __x86_64__
asm volatile("cpuid"
: "=a"(vec[0]), "=b"(vec[1]),
"=c"(vec[2]), "=d"(vec[3])
: "0"(function) : "cc");
#else
asm volatile("pusha \n\t"
"cpuid \n\t"
"mov %%eax, 0(%1) \n\t"
"mov %%ebx, 4(%1) \n\t"
"mov %%ecx, 8(%1) \n\t"
"mov %%edx, 12(%1) \n\t"
"popa"
: "a"(function), "S"(vec) : "memory", "cc");
#endif
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel