This patch looks good.

Thank you.

On Thu, 2014-08-21 at 00:46 +0000, Gao, Liming wrote:
> Hi, I meet with the same issue. I verify it in my ubutu 12.04. GCC46, Nasm 
> 2.09. I meet with the build failure.
> 1) 0x10 is not power of two.
> 2) invalid combination of opcode and operands
> 
>   I provide my patch that can pass build. Please help review it. 
> 
> diff --git a/MdePkg/Library/BaseLib/Ia32/Thunk16.nasm 
> b/MdePkg/Library/BaseLib/Ia32/Thunk16.nasm
> index 2e5a580..105238d 100644
> --- a/MdePkg/Library/BaseLib/Ia32/Thunk16.nasm
> +++ b/MdePkg/Library/BaseLib/Ia32/Thunk16.nasm
> @@ -174,7 +174,7 @@ BITS    16
>  
>  o32 retf                                ; transfer control to user code
>  
> -ALIGN   0x10
> +ALIGN   16
>  _NullSegDesc    DQ      0
>  _16CsDesc:
>                  DW      -1
> diff --git a/MdePkg/Library/BaseLib/X64/Thunk16.nasm 
> b/MdePkg/Library/BaseLib/X64/Thunk16.nasm
> index 8858e74..e11bb24 100644
> --- a/MdePkg/Library/BaseLib/X64/Thunk16.nasm
> +++ b/MdePkg/Library/BaseLib/X64/Thunk16.nasm
> @@ -190,7 +190,7 @@ o32 lidt    [cs:bp + (_16Idtr - .Base)]
>  
>  o32 retf                                ; transfer control to user code
>  
> -ALIGN   0x8
> +ALIGN   8
>  
>  CODE16  equ _16Code - $
>  DATA16  equ _16Data - $
> @@ -237,11 +237,12 @@ BITS    64
>      push    rsi
>      push    rdi
>      
> -    mov     rbx, ds
> +    xor     rbx, rbx
> +    mov     ebx, ds
>      push    rbx          ; Save ds segment register on the stack
> -    mov     rbx, es
> +    mov     ebx, es
>      push    rbx          ; Save es segment register on the stack
> -    mov     rbx, ss
> +    mov     ebx, ss
>      push    rbx          ; Save ss segment register on the stack
>      
>      push    fs
> @@ -307,11 +308,11 @@ BITS    64
>      pop     gs
>      pop     fs
>      pop     rbx
> -    mov     ss, rbx
> +    mov     ss, ebx
>      pop     rbx
> -    mov     es, rbx
> +    mov     es, ebx
>      pop     rbx
> -    mov     ds, rbx
> +    mov     ds, ebx
>  
>      pop     rdi
>      pop     rsi
> 
> -----Original Message-----
> From: Mike Maslenkin [mailto:miha...@parallels.com] 
> Sent: Thursday, August 21, 2014 5:40 AM
> To: edk2-devel@lists.sourceforge.net
> Subject: Re: [edk2] [PATCH 5/8] MdePkg/BaseLib Thunk16: Replace X64 GAS 
> Thunk16 with NASM version
> 
> Hello Jordan !
> build -p  build -p IntelFrameworkModulePkg/IntelFrameworkModulePkg.dsc
> -a X64
> told me about next errors:
> 
> Building ... 
> /home/mg/sources/jljusten/edk2/MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
>  [X64]
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:193:
>  error: segment alignment `0x8' is not power of two
> make: ***
> [/home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.obj]
>  Error 1
> 
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:240:
>  error: invalid combination of opcode and operands
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:242:
>  error: invalid combination of opcode and operands
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:244:
>  error: invalid combination of opcode and operands
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:310:
>  error: invalid combination of opcode and operands
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:312:
>  error: invalid combination of opcode and operands
> /home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.iii:314:
>  error: invalid combination of opcode and operands
> make: ***
> [/home/mg/sources/jljusten/edk2/Build/IntelFrameworkModuleAll/DEBUG_GCC47/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/Thunk16.obj]
>  Error 1
> 
> The last errors come from this
> +global ASM_PFX(InternalAsmThunk16)
> +ASM_PFX(InternalAsmThunk16):
> <skip>    
> 
> 
> ^^^^^^^^^^^^^^^^^^^^^^^
> > +    push    rbx          ; Save ds segment register on the stack
> > +    mov     rbx, es
> > ^^^^^^^^^^^^^^^^^^^^^^^
> > +    push    rbx          ; Save es segment register on the stack
> > +    mov     rbx, ss
> ^^^^^^^^^^^^^^^^^^^^^^^
> > +    push    rbx          ; Save ss segment register on the stack
> <skip>    
> 
> > +    mov     ss, rbx
> > ^^^^^^^^^^^^^^^^^^^^^^^
> > +    pop     rbx
> > +    mov     es, rbx
> ^^^^^^^^^^^^^^^^^^^^^^^
> > +    pop     rbx
> > +    mov     ds, rbx
> ^^^^^^^^^^^^^^^^^^^^^^^
> 
> 
> Initially I used a NASM version used in our build system. Do not know for 
> where we got it but it reported itself as NASM version 2.09.04
> 
> After that I installed a default NASM that comes with openSuSE 12.2:
> NASM version 2.09.08 compiled on Jun 16 2011
> 
> I got same errors.
> So, please clarify which minimal version of NASM is required.
> 
> 
> 
> ------------------------------------------------------------------------------
> Slashdot TV.  
> Video for Nerds.  Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> ------------------------------------------------------------------------------
> Slashdot TV.  
> Video for Nerds.  Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel



------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to