\r
# Global symbols referenced by this module\r
GCC_ASM_IMPORT(CEntryPoint)\r
+GCC_ASM_IMPORT(ArmReadMpidr)\r
GCC_ASM_EXPORT(_ModuleEntryPoint)\r
\r
StartupAddr: .word CEntryPoint\r
\r
\r
ASM_PFX(_ModuleEntryPoint):\r
- // Identify CPU ID\r
- mrc p15, 0, r0, c0, c0, 5\r
- and r0, #0xf\r
+ // Get ID of this CPU in Multicore system\r
+ bl ASM_PFX(ArmReadMpidr)\r
+ LoadConstantToReg (FixedPcdGet32(PcdArmPrimaryCoreMask), r1)\r
+ and r0, r0, r1\r
\r
_SetSVCMode:\r
// Enter SVC mode\r
ldr r2, StartupAddr\r
\r
// Jump to PrePiCore C code\r
- // r0 = core_id\r
+ // r0 = MpId\r
// r1 = UefiMemoryBase\r
blx r2\r
\r