On 10/18/14 20:25, Jordan Justen wrote:
> The BaseTools/Scripts/ConvertMasmToNasm.py script was used to convert
> X64/SecEntry.asm to X64/SecEntry.nasm
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jordan Justen <[email protected]>
> ---
>  OvmfPkg/Sec/SecMain.inf                         |  6 +--
>  OvmfPkg/Sec/X64/SecEntry.S                      | 56 
> -------------------------
>  OvmfPkg/Sec/X64/{SecEntry.asm => SecEntry.nasm} | 18 ++++----
>  3 files changed, 11 insertions(+), 69 deletions(-)
>  delete mode 100644 OvmfPkg/Sec/X64/SecEntry.S
>  rename OvmfPkg/Sec/X64/{SecEntry.asm => SecEntry.nasm} (81%)
> 
> diff --git a/OvmfPkg/Sec/SecMain.inf b/OvmfPkg/Sec/SecMain.inf
> index e823796..4ac431b 100644
> --- a/OvmfPkg/Sec/SecMain.inf
> +++ b/OvmfPkg/Sec/SecMain.inf
> @@ -36,9 +36,9 @@
>    Ia32/SecEntry.nasm| GCC
>  
>  [Sources.X64]
> -  X64/SecEntry.asm  | MSFT
> -  X64/SecEntry.asm  | INTEL
> -  X64/SecEntry.S    | GCC
> +  X64/SecEntry.nasm | MSFT
> +  X64/SecEntry.nasm | INTEL
> +  X64/SecEntry.nasm | GCC

Liming's remark applies.

>  
>  [Packages]
>    MdePkg/MdePkg.dec
> diff --git a/OvmfPkg/Sec/X64/SecEntry.S b/OvmfPkg/Sec/X64/SecEntry.S
> deleted file mode 100644
> index 37354d9..0000000
> --- a/OvmfPkg/Sec/X64/SecEntry.S
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -#      TITLE   SecEntry.asm
> -#------------------------------------------------------------------------------
> -#*
> -#*   Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
> -#*   This program and the accompanying materials
> -#*   are licensed and made available under the terms and conditions of the 
> BSD License
> -#*   which accompanies this distribution.  The full text of the license may 
> be found at
> -#*   http://opensource.org/licenses/bsd-license.php
> -#*
> -#*   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
> -#*   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR 
> IMPLIED.
> -#*
> -#*    CpuAsm.asm
> -#*
> -#*   Abstract:
> -#*
> -#------------------------------------------------------------------------------
> -
> -
> -#include <Base.h>
> -
> -#EXTERN ASM_PFX(SecCoreStartupWithStack)
> -
> -#
> -# SecCore Entry Point
> -#
> -# Processor is in flat protected mode
> -#
> -# @param[in]  RAX   Initial value of the EAX register (BIST: Built-in Self 
> Test)
> -# @param[in]  DI    'BP': boot-strap processor, or 'AP': application 
> processor
> -# @param[in]  RBP   Pointer to the start of the Boot Firmware Volume
> -#
> -# @return     None  This routine does not return
> -#
> -ASM_GLOBAL ASM_PFX(_ModuleEntryPoint)
> -ASM_PFX(_ModuleEntryPoint):
> -
> -    #
> -    # Load temporary stack top at very low memory.  The C code
> -    # can reload to a better address.
> -    #
> -    .set    SEC_TOP_OF_STACK, FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \
> -                              FixedPcdGet32 (PcdOvmfSecPeiTempRamSize)
> -    movq    $SEC_TOP_OF_STACK, %rsp 
> -    nop
> -
> -    #
> -    # Setup parameters and call SecCoreStartupWithStack
> -    #   rcx: BootFirmwareVolumePtr
> -    #   rdx: TopOfCurrentStack
> -    #
> -    movq    %rbp, %rcx
> -    movq    %rsp, %rdx
> -    subq    $0x20, %rsp
> -    call    ASM_PFX(SecCoreStartupWithStack)
> -
> diff --git a/OvmfPkg/Sec/X64/SecEntry.asm b/OvmfPkg/Sec/X64/SecEntry.nasm
> similarity index 81%
> rename from OvmfPkg/Sec/X64/SecEntry.asm
> rename to OvmfPkg/Sec/X64/SecEntry.nasm
> index 4135208..f40427a 100644
> --- a/OvmfPkg/Sec/X64/SecEntry.asm
> +++ b/OvmfPkg/Sec/X64/SecEntry.nasm
> @@ -1,4 +1,3 @@
> -      TITLE   SecEntry.asm
>  
> ;------------------------------------------------------------------------------
>  ;*
>  ;*   Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
> @@ -18,9 +17,10 @@
>  
>  #include <Base.h>
>  
> -.code
> +DEFAULT REL

Okay, so this is hardwired in "ConvertMasmToNasm.py", and according to
the nasm documentation, it selects RIP-relative addressing.

> +SECTION .text
>  
> -EXTERN SecCoreStartupWithStack:PROC
> +extern ASM_PFX(SecCoreStartupWithStack)
>  
>  ;
>  ; SecCore Entry Point
> @@ -33,12 +33,13 @@ EXTERN SecCoreStartupWithStack:PROC
>  ;
>  ; @return     None  This routine does not return
>  ;
> -_ModuleEntryPoint PROC PUBLIC
> +global ASM_PFX(_ModuleEntryPoint)
> +ASM_PFX(_ModuleEntryPoint):
>  
>      ;
>      ; Load temporary RAM stack based on PCDs
>      ;
> -    SEC_TOP_OF_STACK EQU (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \
> +    %define SEC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \
>                            FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))
>      mov     rsp, SEC_TOP_OF_STACK
>      nop
> @@ -50,9 +51,6 @@ _ModuleEntryPoint PROC PUBLIC
>      ;
>      mov     rcx, rbp
>      mov     rdx, rsp
> -    sub     rsp, 20h
> -    call    SecCoreStartupWithStack
> +    sub     rsp, 0x20
> +    call    ASM_PFX(SecCoreStartupWithStack)
>  
> -_ModuleEntryPoint ENDP
> -
> -END
> 

With Liming's notes for the INF:

Reviewed-by: Laszlo Ersek <[email protected]>

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to