|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxc-x86-64-fixes.patch
Anthony Liguori wrote: Arun Sharma wrote:Does this mean the ebx-clobbering bug in gcc 3.4 also exists on x86-64 (except it clobbers rbx instead)?+#ifdef __i386____asm__ __volatile__ ("pushl %%ebx; cpuid; popl %%ebx" : "=a" (eax), "=c" (ecx) : "0" (1) : "dx"); There was no bug in pre gcc-3.4 generated code in the original version of vmx_identify(). The problem was with some other test case where the compiler generated code used %ebx within the inline assembly (which would be broken because cpuid clobbers %ebx and compiler didn't realize that). gcc developers instead of making only those cases illegal, made even cases such as ours which look perfectly legal to me, illegal (because it's too much work for them to figure out what's legal and what's not). I really hate to see this end up a permanent part of the tree...
perhaps we should add a Linux style cpuid() function:
As I pointed out in the earlier thread, the linux code in <asm/processor.h> is also broken when used in userland with -fPIC. I used this particular case (<asm/processor.h>) as an argument with gcc developers on why they shouldn't be making code that was legal with an earlier version of gcc suddenly illegal. But I couldn't provide enough use cases to make a strong argument and since an easy (although ugly) workaround was available, I settled for it.
-Arun
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |