[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] PIC register 'bx' clobbered in 'asm' - xen-unstable build error

On 2/25/2005 1:44 PM, Anthony Liguori wrote:
Jerone Young wrote:

The big question is why are you clobbering bx , dx registers on get
CPUID returns information in eax, ebx, ecx, and edx. With -fPIC you have to push ebx onto the stack before calling cpuid and pop it afterward as Bin points out is what the patch to xen-unstable does.

The compiler used to generate the push/pop just fine for gcc-3.3. This is an 
issue specific to gcc-3.4.

gcc-3.3 code:

(gdb) disassemble vmx_identify
Dump of assembler code for function vmx_identify:
0x00000000 <vmx_identify+0>:    push   %ebp
0x00000001 <vmx_identify+1>:    mov    $0x1,%eax
0x00000006 <.LC23+3>:   mov    %esp,%ebp
0x00000008 <.LC23+5>:   push   %ebx
0x00000009 <.LC23+6>:   cpuid
0x0000000b <.LC23+8>:   pop    %ebx
0x0000000c <.LC23+9>:   xor    %eax,%eax
0x0000000e <.LC23+11>:  test   $0x20,%cl
0x00000011 <.LC23+14>:  setne  %al
0x00000014 <.LC23+17>:  pop    %ebp
0x00000015 <.LC23+18>:  dec    %eax
0x00000016 <.LC23+19>:  ret
0x00000017 <.LC23+20>:  mov    %esi,%esi
0x00000019 <.LC23+22>:  lea    0x0(%edi),%edi
End of assembler dump.

I'm following up with compiler people here to understand why the compiler 
thinks this is a bug.

BTW <asm-i386/processor.h> has similar code.


SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.