ArmPlatform/Sec: Ensure all the CPU cores are calling ArmCpuSetup()

Only the primary core was calling this function.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12646 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2011-11-01 23:45:41 +00:00
parent aa26b8f6c8
commit 710b8acb56
1 changed files with 12 additions and 11 deletions

View File

@ -35,10 +35,20 @@ CEntryPoint (
UINTN CharCount;
UINTN JumpAddress;
// Invalidate the data cache. Doesn't have to do the Data cache clean.
ArmInvalidateDataCache();
// Invalidate Instruction Cache
ArmInvalidateInstructionCache();
// Invalidate I & D TLBs
ArmInvalidateInstructionAndDataTlb();
// CPU specific settings
ArmCpuSetup (MpId);
// Primary CPU clears out the SCU tag RAMs, secondaries wait
if (IS_PRIMARY_CORE(MpId)) {
ArmCpuSetup (MpId);
if (ArmIsMpCore()) {
ArmCpuSynchronizeSignal (ARM_CPU_EVENT_BOOT_MEM_INIT);
}
@ -69,15 +79,6 @@ CEntryPoint (
ArmGicEnableInterruptInterface (PcdGet32(PcdGicInterruptInterfaceBase));
}
// Invalidate the data cache. Doesn't have to do the Data cache clean.
ArmInvalidateDataCache();
// Invalidate Instruction Cache
ArmInvalidateInstructionCache();
// Invalidate I & D TLBs
ArmInvalidateInstructionAndDataTlb();
// Enable Full Access to CoProcessors
ArmWriteCPACR (CPACR_CP_FULL_ACCESS);