gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress|0x0|UINT32|0xf\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|0x0|UINT32|0x11\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize|0x0|UINT32|0x12\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|0x0|UINT32|0x13\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize|0x0|UINT32|0x14\r
\r
[PcdsDynamic, PcdsDynamicEx]\r
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2\r
0x000000|0x006000\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize\r
\r
+0x010000|0x008000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
+\r
0x020000|0x7E0000\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize\r
FV = MAINFV\r
0x000000|0x006000\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize\r
\r
+0x010000|0x008000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
+\r
0x020000|0x7E0000\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize\r
FV = MAINFV\r
0x000000|0x006000\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize\r
\r
+0x010000|0x008000\r
+gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
+\r
0x020000|0x7E0000\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase|gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize\r
FV = MAINFV\r
-# 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\r
+#------------------------------------------------------------------------------\r
+#*\r
+#* Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+#* This program and the accompanying materials\r
+#* are licensed and made available under the terms and conditions of the BSD License\r
+#* which accompanies this distribution. The full text of the license may be found at\r
+#* http://opensource.org/licenses/bsd-license.php\r
+#*\r
+#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#*\r
+#* CpuAsm.asm\r
+#*\r
+#* Abstract:\r
+#*\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#include <Base.h>\r
+\r
+#EXTERN ASM_PFX(SecCoreStartupWithStack)\r
+\r
+#\r
+# SecCore Entry Point\r
+#\r
+# Processor is in flat protected mode\r
+#\r
+# @param[in] EAX Initial value of the EAX register (BIST: Built-in Self Test)\r
+# @param[in] DI 'BP': boot-strap processor, or 'AP': application processor\r
+# @param[in] EBP Pointer to the start of the Boot Firmware Volume\r
+#\r
+# @return None This routine does not return\r
+#\r
+ASM_GLOBAL ASM_PFX(_ModuleEntryPoint)\r
+ASM_PFX(_ModuleEntryPoint):\r
+\r
+ #\r
+ # Load temporary RAM stack based on PCDs\r
+ #\r
+ .set SEC_TOP_OF_STACK, FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \\r
+ FixedPcdGet32 (PcdOvmfSecPeiTempRamSize)\r
+ movl $SEC_TOP_OF_STACK, %eax\r
+ movl %eax, %esp\r
+ nop\r
+\r
+ #\r
+ # Setup parameters and call SecCoreStartupWithStack\r
+ # [esp] return address for call\r
+ # [esp+4] BootFirmwareVolumePtr\r
+ # [esp+8] TopOfCurrentStack\r
+ #\r
+ pushl %eax\r
+ pushl %ebp\r
+ call ASM_PFX(SecCoreStartupWithStack)\r
+\r
+\r
+#END\r
+\r
TITLE SecEntry.asm\r
;------------------------------------------------------------------------------\r
;*\r
-;* Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+;* Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
;* This program and the accompanying materials\r
;* are licensed and made available under the terms and conditions of the BSD License\r
;* which accompanies this distribution. The full text of the license may be found at\r
_ModuleEntryPoint PROC PUBLIC\r
\r
;\r
- ; Load temporary stack top at very low memory. The C code\r
- ; can reload to a better address.\r
+ ; Load temporary RAM stack based on PCDs\r
;\r
- mov eax, BASE_512KB\r
+ SEC_TOP_OF_STACK EQU (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \\r
+ FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))\r
+ mov eax, SEC_TOP_OF_STACK\r
mov esp, eax\r
nop\r
\r
;\r
- ; Call into C code\r
+ ; Setup parameters and call SecCoreStartupWithStack\r
+ ; [esp] return address for call\r
+ ; [esp+4] BootFirmwareVolumePtr\r
+ ; [esp+8] TopOfCurrentStack\r
;\r
push eax\r
push ebp\r
// |-------------| <-- SecCoreData.TemporaryRamBase\r
//\r
\r
+ ASSERT ((UINTN) (PcdGet32 (PcdOvmfSecPeiTempRamBase) +\r
+ PcdGet32 (PcdOvmfSecPeiTempRamSize)) ==\r
+ (UINTN) TopOfCurrentStack);\r
+\r
//\r
// Initialize SEC hand-off state\r
//\r
SecCoreData.DataSize = sizeof(EFI_SEC_PEI_HAND_OFF);\r
\r
- SecCoreData.TemporaryRamSize = SIZE_64KB;\r
+ SecCoreData.TemporaryRamSize = (UINTN) PcdGet32 (PcdOvmfSecPeiTempRamSize);\r
SecCoreData.TemporaryRamBase = (VOID*)((UINT8 *)TopOfCurrentStack - SecCoreData.TemporaryRamSize);\r
\r
SecCoreData.PeiTemporaryRamBase = SecCoreData.TemporaryRamBase;\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvBase\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfMemFvSize\r
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase\r
+ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize\r
-# 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] 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.
- #
- movq $BASE_512KB, %rsp
- nop
-
- #
- # Setup parameters and call SecCoreStartupWithStack
- # rcx: BootFirmwareVolumePtr
- # rdx: TopOfCurrentStack
- #
- movq %rbp, %rcx
- movq %rsp, %rdx
- subq $0x20, %rsp
- call ASM_PFX(SecCoreStartupWithStack)
-
+# TITLE SecEntry.asm\r
+#------------------------------------------------------------------------------\r
+#*\r
+#* Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+#* This program and the accompanying materials\r
+#* are licensed and made available under the terms and conditions of the BSD License\r
+#* which accompanies this distribution. The full text of the license may be found at\r
+#* http://opensource.org/licenses/bsd-license.php\r
+#*\r
+#* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#*\r
+#* CpuAsm.asm\r
+#*\r
+#* Abstract:\r
+#*\r
+#------------------------------------------------------------------------------\r
+\r
+\r
+#include <Base.h>\r
+\r
+#EXTERN ASM_PFX(SecCoreStartupWithStack)\r
+\r
+#\r
+# SecCore Entry Point\r
+#\r
+# Processor is in flat protected mode\r
+#\r
+# @param[in] RAX Initial value of the EAX register (BIST: Built-in Self Test)\r
+# @param[in] DI 'BP': boot-strap processor, or 'AP': application processor\r
+# @param[in] RBP Pointer to the start of the Boot Firmware Volume\r
+#\r
+# @return None This routine does not return\r
+#\r
+ASM_GLOBAL ASM_PFX(_ModuleEntryPoint)\r
+ASM_PFX(_ModuleEntryPoint):\r
+\r
+ #\r
+ # Load temporary stack top at very low memory. The C code\r
+ # can reload to a better address.\r
+ #\r
+ .set SEC_TOP_OF_STACK, FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \\r
+ FixedPcdGet32 (PcdOvmfSecPeiTempRamSize)\r
+ movq $SEC_TOP_OF_STACK, %rsp \r
+ nop\r
+\r
+ #\r
+ # Setup parameters and call SecCoreStartupWithStack\r
+ # rcx: BootFirmwareVolumePtr\r
+ # rdx: TopOfCurrentStack\r
+ #\r
+ movq %rbp, %rcx\r
+ movq %rsp, %rdx\r
+ subq $0x20, %rsp\r
+ call ASM_PFX(SecCoreStartupWithStack)\r
+\r
TITLE SecEntry.asm\r
;------------------------------------------------------------------------------\r
;*\r
-;* Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+;* Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
;* This program and the accompanying materials\r
;* are licensed and made available under the terms and conditions of the BSD License\r
;* which accompanies this distribution. The full text of the license may be found at\r
_ModuleEntryPoint PROC PUBLIC\r
\r
;\r
- ; Load temporary stack top at very low memory. The C code\r
- ; can reload to a better address.\r
+ ; Load temporary RAM stack based on PCDs\r
;\r
- mov rsp, BASE_512KB\r
+ SEC_TOP_OF_STACK EQU (FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) + \\r
+ FixedPcdGet32 (PcdOvmfSecPeiTempRamSize))\r
+ mov rsp, SEC_TOP_OF_STACK\r
nop\r
\r
;\r