Revision: 14345
          http://edk2.svn.sourceforge.net/edk2/?rev=14345&view=rev
Author:   oliviermartin
Date:     2013-05-10 12:44:30 +0000 (Fri, 10 May 2013)
Log Message:
-----------
ArmPlatformPkg/ArmPlatformLib: Added ArmPlatformGetPrimaryCoreMpId()

ArmPlatformGetPrimaryCoreMpId returns the MPID of the primary core.
The primary core might not be known at build time (eg: the platform allows
the boot CPU to be changed through board config).

This function is used during the secondary core stack initialization to know
the position of the secondary core in the SoC.
A secondary core that is at the position N, with N greater than the primary
core position, will be at the position N-1 in the list of secondary stacks
(the primary core has its own separate bigger stack).

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>
Acked-by: Ryan Harkin <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>

Modified Paths:
--------------
    
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.S
    
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.asm
    
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S
    
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm
    trunk/edk2/ArmPlatformPkg/Include/Library/ArmPlatformLib.h
    trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.S
    
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.asm

Modified: 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.S
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.S
        2013-05-10 12:41:27 UTC (rev 14344)
+++ 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.S
        2013-05-10 12:44:30 UTC (rev 14345)
@@ -17,11 +17,21 @@
 .align 2
 
 GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
+GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
 
 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)
 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask)
 
 //UINTN
+//ArmPlatformGetPrimaryCoreMpId (
+//  VOID
+//  );
+ASM_PFX(ArmPlatformGetPrimaryCoreMpId):
+  LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
+  ldr   r0, [r0]
+  bx    lr
+
+//UINTN
 //ArmPlatformIsPrimaryCore (
 //  IN UINTN MpId
 //  );

Modified: 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.asm
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.asm
      2013-05-10 12:41:27 UTC (rev 14344)
+++ 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4Helper.asm
      2013-05-10 12:44:30 UTC (rev 14345)
@@ -18,6 +18,7 @@
   INCLUDE AsmMacroIoLib.inc
 
   EXPORT  ArmPlatformIsPrimaryCore
+  EXPORT  ArmPlatformGetPrimaryCoreMpId
 
   IMPORT  _gPcd_FixedAtBuild_PcdArmPrimaryCore
   IMPORT  _gPcd_FixedAtBuild_PcdArmPrimaryCoreMask
@@ -25,6 +26,16 @@
   AREA CTA9x4Helper, CODE, READONLY
 
 //UINTN
+//ArmPlatformGetPrimaryCoreMpId (
+//  VOID
+//  );
+ArmPlatformGetPrimaryCoreMpId FUNCTION
+  LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
+  ldr     r0, [r0]
+  bx     lr
+  ENDFUNC
+
+//UINTN
 //ArmPlatformIsPrimaryCore (
 //  IN UINTN MpId
 //  );

Modified: 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S
        2013-05-10 12:41:27 UTC (rev 14344)
+++ 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S
        2013-05-10 12:44:30 UTC (rev 14345)
@@ -23,6 +23,7 @@
 
 GCC_ASM_EXPORT(ArmGetCpuCountPerCluster)
 GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
+GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
 
 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)
 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask)
@@ -36,6 +37,15 @@
   mrc   p15, 4, r0, c15, c0, 0
   bx  lr
 
+//UINTN
+//ArmPlatformGetPrimaryCoreMpId (
+//  VOID
+//  );
+ASM_PFX(ArmPlatformGetPrimaryCoreMpId):
+  LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
+  ldr   r0, [r0]
+  bx    lr
+
 # IN None
 # OUT r0 = number of cores present in the system
 ASM_PFX(ArmGetCpuCountPerCluster):

Modified: 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm
      2013-05-10 12:41:27 UTC (rev 14344)
+++ 
trunk/edk2/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm
      2013-05-10 12:44:30 UTC (rev 14345)
@@ -23,6 +23,7 @@
 
   EXPORT    ArmGetCpuCountPerCluster
   EXPORT    ArmPlatformIsPrimaryCore
+  EXPORT    ArmPlatformGetPrimaryCoreMpId
 
   IMPORT  _gPcd_FixedAtBuild_PcdArmPrimaryCore
   IMPORT  _gPcd_FixedAtBuild_PcdArmPrimaryCoreMask
@@ -39,6 +40,16 @@
   bx  lr
   ENDFUNC
 
+//UINTN
+//ArmPlatformGetPrimaryCoreMpId (
+//  VOID
+//  );
+ArmPlatformGetPrimaryCoreMpId FUNCTION
+  LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
+  ldr   r0, [r0]
+  bx    lr
+  ENDFUNC
+
 // IN None
 // OUT r0 = number of cores present in the system
 ArmGetCpuCountPerCluster FUNCTION

Modified: trunk/edk2/ArmPlatformPkg/Include/Library/ArmPlatformLib.h
===================================================================
--- trunk/edk2/ArmPlatformPkg/Include/Library/ArmPlatformLib.h  2013-05-10 
12:41:27 UTC (rev 14344)
+++ trunk/edk2/ArmPlatformPkg/Include/Library/ArmPlatformLib.h  2013-05-10 
12:44:30 UTC (rev 14345)
@@ -70,6 +70,20 @@
   );
 
 /**
+  Return the MpId of the primary core
+
+  This function returns the MpId of the primary core.
+  This function might be called from assembler before any stack is set.
+
+  @return   Return the MpId of the primary core
+
+**/
+UINTN
+ArmPlatformGetPrimaryCoreMpId (
+  VOID
+  );
+
+/**
   Return the current Boot Mode
 
   This function returns the boot reason on the platform

Modified: 
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.S
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.S    
    2013-05-10 12:41:27 UTC (rev 14344)
+++ 
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.S    
    2013-05-10 12:44:30 UTC (rev 14345)
@@ -18,6 +18,7 @@
 .align 3
 
 GCC_ASM_EXPORT(ArmPlatformGetCorePosition)
+GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
 GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
 
 GCC_ASM_IMPORT(_gPcd_FixedAtBuild_PcdArmPrimaryCore)
@@ -33,6 +34,14 @@
   add  r0, r1, r0, LSR #7
   bx   lr
 
+//UINTN
+//ArmPlatformGetPrimaryCoreMpId (
+//  VOID
+//  );
+ASM_PFX(ArmPlatformGetPrimaryCoreMpId):
+  LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
+  ldr   r0, [r0]
+  bx    lr
 
 //UINTN
 //ArmPlatformIsPrimaryCore (

Modified: 
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.asm
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.asm  
    2013-05-10 12:41:27 UTC (rev 14344)
+++ 
trunk/edk2/ArmPlatformPkg/Library/ArmPlatformLibNull/Arm/ArmPlatformHelper.asm  
    2013-05-10 12:44:30 UTC (rev 14345)
@@ -17,6 +17,7 @@
   INCLUDE AsmMacroIoLib.inc
 
   EXPORT  ArmPlatformGetCorePosition
+  EXPORT  ArmPlatformGetPrimaryCoreMpId
   EXPORT  ArmPlatformIsPrimaryCore
 
   IMPORT  _gPcd_FixedAtBuild_PcdArmPrimaryCore
@@ -37,6 +38,16 @@
   ENDFUNC
 
 //UINTN
+//ArmPlatformGetPrimaryCoreMpId (
+//  VOID
+//  );
+ArmPlatformGetPrimaryCoreMpId FUNCTION
+  LoadConstantToReg (_gPcd_FixedAtBuild_PcdArmPrimaryCoreMask, r0)
+  ldr   r0, [r0]
+  bx    lr
+  ENDFUNC
+
+//UINTN
 //ArmPlatformIsPrimaryCore (
 //  IN UINTN MpId
 //  );

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to