From 0787bc6184631f20f8bf3b4abd61630a4a9bc672 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Thu, 22 Sep 2011 23:01:13 +0000 Subject: ArmPlatformPkg: Introduce Primary core macros On MpCore system, the primary core can now be any core of the system. To identify the primary core, you can use 'gArmTokenSpaceGuid.PcdArmPrimaryCoreMask' and 'gArmTokenSpaceGuid.PcdArmPrimaryCore'. These PCDs by default use the ClusterId and CoreId to identify the core. And the primary core is defined as the ClusetrId=0 and CoreId=0. The helper macros are: IS_PRIMARY_CORE(MpId), GET_CORE_ID(MpId), GET_CLUSTER_ID(MpId), GET_CORE_POS(MpId), PRIMARY_CORE_ID. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12412 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Sec/SecEntryPoint.S | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'ArmPlatformPkg/Sec/SecEntryPoint.S') diff --git a/ArmPlatformPkg/Sec/SecEntryPoint.S b/ArmPlatformPkg/Sec/SecEntryPoint.S index 8e5ea31f66..909f7fafbc 100644 --- a/ArmPlatformPkg/Sec/SecEntryPoint.S +++ b/ArmPlatformPkg/Sec/SecEntryPoint.S @@ -35,6 +35,7 @@ GCC_ASM_IMPORT(ArmPlatformInitializeBootMemory) GCC_ASM_IMPORT(ArmDisableInterrupts) GCC_ASM_IMPORT(ArmDisableCachesAndMmu) GCC_ASM_IMPORT(ArmWriteVBar) +GCC_ASM_IMPORT(ArmReadMpidr) GCC_ASM_IMPORT(SecVectorTable) #if (FixedPcdGet32(PcdMPCoreSupport)) @@ -58,10 +59,13 @@ ASM_PFX(_ModuleEntryPoint): _IdentifyCpu: # Identify CPU ID bl ASM_PFX(ArmReadMpidr) - and r5, r0, #0xf + // Get ID of this CPU in Multicore system + LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1) + and r5, r0, r1 #get ID of this CPU in Multicore system - cmp r5, #0 + LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCore), r1) + cmp r5, r1 # Only the primary core initialize the memory (SMC) beq _InitMem -- cgit v1.2.3