cmp x0, #1\r
bne _PrepareArguments\r
\r
-_ReserveGlobalVariable:\r
- LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), x0)\r
- // InitializePrimaryStack($GlobalVariableSize, $Tmp1, $Tmp2)\r
- InitializePrimaryStack(x0, x1, x2)\r
-\r
_PrepareArguments:\r
mov x0, x10\r
mov x1, x11\r
mov x2, x12\r
- mov x3, sp\r
\r
// Move sec startup address into a data register\r
// Ensure we're jumping to FV version of the code (not boot remapped alias)\r
// x0 = MpId\r
// x1 = UefiMemoryBase\r
// x2 = StacksBase\r
- // x3 = GlobalVariableBase\r
blr x4\r
\r
_NeverReturn:\r
cmp r0, #1\r
bne _PrepareArguments\r
\r
-_ReserveGlobalVariable:\r
- LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), r0)\r
- // InitializePrimaryStack($GlobalVariableSize, $Tmp1)\r
- InitializePrimaryStack(r0, r1)\r
-\r
_PrepareArguments:\r
mov r0, r8\r
mov r1, r9\r
// r0 = MpId\r
// r1 = UefiMemoryBase\r
// r2 = StacksBase\r
- // r3 = GlobalVariableBase\r
blx r4\r
\r
_NeverReturn:\r
cmp r0, #1\r
bne _PrepareArguments\r
\r
-_ReserveGlobalVariable\r
- LoadConstantToReg (FixedPcdGet32(PcdPeiGlobalVariableSize), r0)\r
- // InitializePrimaryStack($GlobalVariableSize, $Tmp1)\r
- InitializePrimaryStack r0, r1\r
-\r
_PrepareArguments\r
mov r0, r8\r
mov r1, r9\r
mov r2, r10\r
- mov r3, sp\r
\r
// Move sec startup address into a data register\r
// Ensure we're jumping to FV version of the code (not boot remapped alias)\r
// r0 = MpId\r
// r1 = UefiMemoryBase\r
// r2 = StacksBase\r
- // r3 = GlobalVariableBase\r
blx r4\r
\r
_NeverReturn\r
PrimaryMain (\r
IN UINTN UefiMemoryBase,\r
IN UINTN StacksBase,\r
- IN UINTN GlobalVariableBase,\r
IN UINT64 StartTimeStamp\r
)\r
{\r
ArmGicSendSgiTo (PcdGet32(PcdGicDistributorBase), ARM_GIC_ICDSGIR_FILTER_EVERYONEELSE, 0x0E, PcdGet32 (PcdGicSgiIntId));\r
}\r
\r
- PrePiMain (UefiMemoryBase, StacksBase, GlobalVariableBase, StartTimeStamp);\r
+ PrePiMain (UefiMemoryBase, StacksBase, StartTimeStamp);\r
\r
// We must never return\r
ASSERT(FALSE);\r
PrimaryMain (\r
IN UINTN UefiMemoryBase,\r
IN UINTN StacksBase,\r
- IN UINTN GlobalVariableBase,\r
IN UINT64 StartTimeStamp\r
)\r
{\r
ASSERT(ArmIsMpCore() == 0);\r
DEBUG_CODE_END();\r
\r
- PrePiMain (UefiMemoryBase, StacksBase, GlobalVariableBase, StartTimeStamp);\r
+ PrePiMain (UefiMemoryBase, StacksBase, StartTimeStamp);\r
\r
// We must never return\r
ASSERT(FALSE);\r
gArmMpCoreInfoPpiGuid\r
\r
[Guids]\r
- gArmGlobalVariableGuid\r
gArmMpCoreInfoGuid\r
\r
[FeaturePcd]\r
gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize\r
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize\r
\r
- gArmPlatformTokenSpaceGuid.PcdPeiGlobalVariableSize\r
-\r
gArmTokenSpaceGuid.PcdGicDistributorBase\r
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase\r
gArmTokenSpaceGuid.PcdGicSgiIntId\r
gArmMpCoreInfoPpiGuid\r
\r
[Guids]\r
- gArmGlobalVariableGuid\r
gArmMpCoreInfoGuid\r
\r
[FeaturePcd]\r
gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize\r
gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize\r
\r
- gArmPlatformTokenSpaceGuid.PcdPeiGlobalVariableSize\r
-\r
gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize\r
\r
gArmPlatformTokenSpaceGuid.PcdCoreCount\r
#include <Ppi/GuidedSectionExtraction.h>\r
#include <Ppi/ArmMpCoreInfo.h>\r
#include <Guid/LzmaDecompress.h>\r
-#include <Guid/ArmGlobalVariableHob.h>\r
\r
#include "PrePi.h"\r
#include "LzmaDecompress.h"\r
#define IS_XIP() (((UINT32)FixedPcdGet32 (PcdFdBaseAddress) > mSystemMemoryEnd) || \\r
((FixedPcdGet32 (PcdFdBaseAddress) + FixedPcdGet32 (PcdFdSize)) < FixedPcdGet64 (PcdSystemMemoryBase)))\r
\r
-// Not used when PrePi in run in XIP mode\r
-UINTN mGlobalVariableBase = 0;\r
-\r
EFI_STATUS\r
EFIAPI\r
ExtractGuidedSectionLibConstructor (\r
VOID\r
);\r
\r
-VOID\r
-EFIAPI\r
-BuildGlobalVariableHob (\r
- IN EFI_PHYSICAL_ADDRESS GlobalVariableBase,\r
- IN UINT32 GlobalVariableSize\r
- )\r
-{\r
- ARM_HOB_GLOBAL_VARIABLE *Hob;\r
-\r
- Hob = CreateHob (EFI_HOB_TYPE_GUID_EXTENSION, sizeof (ARM_HOB_GLOBAL_VARIABLE));\r
- ASSERT(Hob != NULL);\r
-\r
- CopyGuid (&(Hob->Header.Name), &gArmGlobalVariableGuid);\r
- Hob->GlobalVariableBase = GlobalVariableBase;\r
- Hob->GlobalVariableSize = GlobalVariableSize;\r
-}\r
-\r
EFI_STATUS\r
GetPlatformPpi (\r
IN EFI_GUID *PpiGuid,\r
PrePiMain (\r
IN UINTN UefiMemoryBase,\r
IN UINTN StacksBase,\r
- IN UINTN GlobalVariableBase,\r
IN UINT64 StartTimeStamp\r
)\r
{\r
}\r
BuildStackHob (StacksBase, StacksSize);\r
\r
- // Declare the Global Variable HOB\r
- BuildGlobalVariableHob (GlobalVariableBase, FixedPcdGet32 (PcdPeiGlobalVariableSize));\r
-\r
//TODO: Call CpuPei as a library\r
BuildCpuHob (PcdGet8 (PcdPrePiCpuMemorySize), PcdGet8 (PcdPrePiCpuIoSize));\r
\r
CEntryPoint (\r
IN UINTN MpId,\r
IN UINTN UefiMemoryBase,\r
- IN UINTN StacksBase,\r
- IN UINTN GlobalVariableBase\r
+ IN UINTN StacksBase\r
)\r
{\r
UINT64 StartTimeStamp;\r
// Define the Global Variable region when we are not running in XIP\r
if (!IS_XIP()) {\r
if (ArmPlatformIsPrimaryCore (MpId)) {\r
- mGlobalVariableBase = GlobalVariableBase;\r
if (ArmIsMpCore()) {\r
// Signal the Global Variable Region is defined (event: ARM_CPU_EVENT_DEFAULT)\r
ArmCallSEV ();\r
// If not primary Jump to Secondary Main\r
if (ArmPlatformIsPrimaryCore (MpId)) {\r
// Goto primary Main.\r
- PrimaryMain (UefiMemoryBase, StacksBase, GlobalVariableBase, StartTimeStamp);\r
+ PrimaryMain (UefiMemoryBase, StacksBase, StartTimeStamp);\r
} else {\r
SecondaryMain (MpId);\r
}\r
PrePiMain (\r
IN UINTN UefiMemoryBase,\r
IN UINTN StacksBase,\r
- IN UINTN GlobalVariableBase,\r
IN UINT64 StartTimeStamp\r
);\r
\r
PrimaryMain (\r
IN UINTN UefiMemoryBase,\r
IN UINTN StacksBase,\r
- IN UINTN GlobalVariableBase,\r
IN UINT64 StartTimeStamp\r
);\r
\r