]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S
ArmPlatformPkg/ArmPlatformLib: Added support for ArmPlatformIsPrimaryCore()
[mirror_edk2.git] / ArmPlatformPkg / ArmVExpressPkg / Library / ArmVExpressLibRTSM / Arm / RTSMHelper.S
index 949e7a3014d356b60ce57e15613394bd2c752d69..29775915294bda0441d44398dbf0fe6f5e498793 100644 (file)
@@ -1,10 +1,10 @@
 #\r
-#  Copyright (c) 2011, ARM Limited. All rights reserved.\r
+#  Copyright (c) 2011-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
 #  which accompanies this distribution.  The full text of the license may be found at        \r
-#  http:#opensource.org/licenses/bsd-license.php                                            \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
@@ -15,7 +15,6 @@
 #include <Base.h>\r
 #include <Library/PcdLib.h>\r
 #include <AutoGen.h>\r
-#.include AsmMacroIoLib.inc\r
 \r
 #include <Chipset/ArmCortexA9.h>\r
 \r
 .align 2\r
 \r
 GCC_ASM_EXPORT(ArmGetCpuCountPerCluster)\r
+GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)\r
+\r
+GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)\r
+GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask)\r
 \r
 # IN None\r
 # OUT r0 = SCU Base Address\r
@@ -68,4 +71,19 @@ _Return:
   ldmfd SP!, {r1-r2}\r
   bx lr\r
 \r
+//UINTN\r
+//ArmPlatformIsPrimaryCore (\r
+//  IN UINTN MpId\r
+//  );\r
+ASM_PFX(ArmPlatformIsPrimaryCore):\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
+\r
 ASM_FUNCTION_REMOVE_IF_UNREFERENCED \r