1;------------------------------------------------------------------------------
2;*
3;*   Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
4;*   This program and the accompanying materials
5;*   are licensed and made available under the terms and conditions of the BSD License
6;*   which accompanies this distribution.  The full text of the license may be found at
7;*   http://opensource.org/licenses/bsd-license.php
8;*
9;*   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10;*   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11;*
12;*    CpuAsm.asm
13;*
14;*   Abstract:
15;*
16;------------------------------------------------------------------------------
17
18#include <Base.h>
19
20DEFAULT REL
21SECTION .text
22
23extern ASM_PFX(SecCoreStartupWithStack)
24
25;
26; SecCore Entry Point
27;
28; Processor is in flat protected mode
29;
30; @param[in]  RAX   Initial value of the EAX register (BIST: Built-in Self Test)
31; @param[in]  DI    'BP': boot-strap processor, or 'AP': application processor
32; @param[in]  RBP   Pointer to the start of the Boot Firmware Volume
33;
34; @return     None  This routine does not return
35;
36global ASM_PFX(_ModuleEntryPoint)
37ASM_PFX(_ModuleEntryPoint):
38
39    ;
40    ; Load temporary RAM stack based on PCDs
41    ;
42    %define SEC_TOP_OF_STACK (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \
43                          FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))
44    mov     rsp, SEC_TOP_OF_STACK
45    nop
46
47    ;
48    ; Setup parameters and call SecCoreStartupWithStack
49    ;   rcx: BootFirmwareVolumePtr
50    ;   rdx: TopOfCurrentStack
51    ;
52    mov     rcx, rbp
53    mov     rdx, rsp
54    sub     rsp, 0x20
55    call    ASM_PFX(SecCoreStartupWithStack)
56
57