//\r
-// Copyright (c) 2011, ARM Limited. All rights reserved.\r
+// Copyright (c) 2013, ARM Limited. All rights reserved.\r
//\r
// This program and the accompanying materials\r
// are licensed and made available under the terms and conditions of the BSD License\r
//\r
\r
#include <AsmMacroIoLib.h>\r
-#include <Base.h>\r
-#include <Library/PcdLib.h>\r
-#include <Library/ArmPlatformLib.h>\r
-#include <ArmPlatform.h>\r
+#include <Library/ArmLib.h>\r
+\r
#include <AutoGen.h>\r
\r
INCLUDE AsmMacroIoLib.inc\r
\r
- EXPORT ArmPlatformIsMemoryInitialized\r
+ EXPORT ArmPlatformPeiBootAction\r
+ EXPORT ArmPlatformIsPrimaryCore\r
+ EXPORT ArmPlatformGetPrimaryCoreMpId\r
+ EXPORT ArmPlatformGetCorePosition\r
+\r
+ IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCore\r
+ IMPORT _gPcd_FixedAtBuild_PcdArmPrimaryCoreMask\r
+\r
+ AREA CTA9x4Helper, CODE, READONLY\r
\r
- PRESERVE8\r
- AREA CTA9x4Helper, CODE, READONLY\r
+//UINTN\r
+//ArmPlatformGetPrimaryCoreMpId (\r
+// VOID\r
+// );\r
+ArmPlatformGetPrimaryCoreMpId FUNCTION\r
+ LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r0)\r
+ ldr r0, [r0]\r
+ bx lr\r
+ ENDFUNC\r
\r
-/**\r
- Called at the early stage of the Boot phase to know if the memory has already been initialized\r
+//UINTN\r
+//ArmPlatformIsPrimaryCore (\r
+// IN UINTN MpId\r
+// );\r
+ArmPlatformIsPrimaryCore FUNCTION\r
+ LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r1)\r
+ ldr r1, [r1]\r
+ and r0, r0, r1\r
+ LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCore, r1)\r
+ ldr r1, [r1]\r
+ cmp r0, r1\r
+ moveq r0, #1\r
+ movne r0, #0\r
+ bx lr\r
+ ENDFUNC\r
\r
- Running the code from the reset vector does not mean we start from cold boot. In some case, we\r
- can go through this code with the memory already initialized.\r
- Because this function is called at the early stage, the implementation must not use the stack.\r
- Its implementation must probably done in assembly to ensure this requirement.\r
+//UINTN\r
+//ArmPlatformGetCorePosition (\r
+// IN UINTN MpId\r
+// );\r
+ArmPlatformGetCorePosition FUNCTION\r
+ and r0, r0, #ARM_CORE_MASK\r
+ bx lr\r
+ ENDFUNC\r
\r
- @return Return the condition value into the 'Z' flag\r
+ArmPlatformPeiBootAction FUNCTION\r
+ bx lr\r
+ ENDFUNC\r
\r
-**/\r
-ArmPlatformIsMemoryInitialized\r
- // Check if the memory has been already mapped, if so skipped the memory initialization\r
- LoadConstantToReg (ARM_VE_SYS_CFGRW1_REG ,r0)\r
- ldr r0, [r0, #0]\r
- \r
- // 0x40000000 = Value of Physical Configuration Switch SW[0]\r
- and r0, r0, #0x40000000\r
- tst r0, #0x40000000\r
- bx lr\r
- \r
+ END\r