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
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to