I don't know a way to reply to a thread that predates my being on the list
but for this thread (which I've copied the last message, circa Oct 22
below) it's still relevant. Because I just got this error in an Ubuntu
14.10 VM, and the easy fix was just to change the asm. I don't know why
Jiang thinks the patch could change the upper 48 bits. He's probably so
used to looking at instructions in Intel syntax that he got confused over
which direction the move was happening. Anyway, point is, you can't build
UDK2014 SP1 on Ubuntu 14.10 (with gcc 4.9.1) without changing this single
instruction. I chose to make it an ax instead of rax. 6 of one, half dozen
of the other.
V/R
JRS
From: Tian, Feng <feng.tian@in...> - 2014-10-22 08:55:08
Jordan,
Your patch is:
- movw %es, %rax
+ mov %es, %rax
The disassemble code through
https://defuse.ca/online-x86-assembler.htm is (I change it from AT&T
syntax to Masm):
66 8c c0 movw rax, es
48 8c c0 mov rax, es
I am not sure if it will cause behavior change, such as RAX's high 48
bit is cleaned to 0? At least the binary of instruction is changed.
Could you help confirm this?
Thanks
Feng
From: Fan, Jeff
Sent: Wednesday, October 22, 2014 3:54 PM
To: Andrew Fish; edk2-devel@...
Cc: Tian, Feng
Subject: RE: [edk2] [PATCH] MdeModulePkg DebugSupportDxe: Fix build
error with GNU assembler
I agree eax is better (0 extended and small size)
Jordan, I could clean up the incorrect usage in other packages.:-)
Jeff
From: Andrew Fish [mailto:afish@...]
Sent: Wednesday, October 22, 2014 2:55 PM
To: edk2-devel@...<mailto:edk2-devel@...>
Cc: Fan, Jeff; Tian, Feng
Subject: Re: [edk2] [PATCH] MdeModulePkg DebugSupportDxe: Fix build
error with GNU assembler
On Oct 21, 2014, at 11:27 PM, Jordan Justen
<jljusten@...<mailto:jljusten@...>> wrote:
On Sun, Oct 19, 2014 at 7:09 PM, Fan, Jeff
<jeff.fan@...<mailto:jeff.fan@...>> wrote:
SourceLevelDebugPkg/DebugAgentLib x64 also used movw %es, %rax.
We need to fix it also.
And UefiCpuPkg/Library/CpuExceptionLib x64 used movl %es, %eax.
We could clean it to make a consistence in code base.
More than that, it appears that the MASM code does a mov rax, es too.
I'm not sure that mov ax, es is really much of an improvement, and I'm
not interested in cleaning all that code up. I'd just like
MdeModulePkg to build. :) Would one of you be interested in pursuing
this cleanup?
I'm also not sure, but it could be that the mov rax, es actually does
a zero extended move, so maybe the mov ax, es would be different.
Would that impact the code that looks at this value later?
Actually it looks like eax is the correct form for X64 code ...
On the MASM side for X64 https://defuse.ca/online-x86-assembler.htm
mov rax, es
mov eax ,es
mov ax, es
mov es, rax
mov es, eax
mov es, ax
0: 48 8c c0 mov rax,es
3: 8c c0 mov eax,es
5: 66 8c c0 mov ax,es
8: 48 8e c0 mov es,rax
b: 8e c0 mov es,eax
d: 8e c0 mov es,eax
ax generates 0x66 - operand-size override prefix
rax generates 0x48 - REX use 64-bit operand size.
Anyway, I think that my original patch makes the code more consistent
with the current other GNU asm and MASM code. So, maybe it is okay as
a small next step?
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel