summaryrefslogtreecommitdiff
path: root/OvmfPkg/Sec/Ia32/SecEntry.S
diff options
context:
space:
mode:
Diffstat (limited to 'OvmfPkg/Sec/Ia32/SecEntry.S')
-rw-r--r--OvmfPkg/Sec/Ia32/SecEntry.S114
1 files changed, 59 insertions, 55 deletions
diff --git a/OvmfPkg/Sec/Ia32/SecEntry.S b/OvmfPkg/Sec/Ia32/SecEntry.S
index a1b0c0d0f0..0771a87449 100644
--- a/OvmfPkg/Sec/Ia32/SecEntry.S
+++ b/OvmfPkg/Sec/Ia32/SecEntry.S
@@ -1,55 +1,59 @@
-# TITLE SecEntry.asm
-#------------------------------------------------------------------------------
-#*
-#* Copyright (c) 2006 - 2009, 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] EAX Initial value of the EAX register (BIST: Built-in Self Test)
-# @param[in] DI 'BP': boot-strap processor, or 'AP': application processor
-# @param[in] EBP 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.
- #
- movl $BASE_512KB, %eax
- movl %eax, %esp
- nop
-
- #
- # Call into C code
- #
- pushl %eax
- pushl %ebp
- call ASM_PFX(SecCoreStartupWithStack)
-
-
-#END
-
+# 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] EAX Initial value of the EAX register (BIST: Built-in Self Test)
+# @param[in] DI 'BP': boot-strap processor, or 'AP': application processor
+# @param[in] EBP 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 RAM stack based on PCDs
+ #
+ .set SEC_TOP_OF_STACK, FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \
+ FixedPcdGet32 (PcdOvmfSecPeiTempRamSize)
+ movl $SEC_TOP_OF_STACK, %eax
+ movl %eax, %esp
+ nop
+
+ #
+ # Setup parameters and call SecCoreStartupWithStack
+ # [esp] return address for call
+ # [esp+4] BootFirmwareVolumePtr
+ # [esp+8] TopOfCurrentStack
+ #
+ pushl %eax
+ pushl %ebp
+ call ASM_PFX(SecCoreStartupWithStack)
+
+
+#END
+