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