From b1d41be7c9c0dc18cf9b73785eee6a20f13db126 Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Wed, 2 May 2012 19:55:32 +0000 Subject: ArmPkg/ArmCpuLib: Replaced complex functions ArmCpuSynchronizeWait & ArmCpuSynchronizeSignal by sev & wfe Previsouly the synchronization of MpCore was using the SGI (Software Generated Interrupt) to synchronize MpCore during the early boot. This commit replaced this mechanism by the more appropriate SEV/WFE instructions (Send/Wait Event instructions). That also eases the port to a new cpu/platform. Signed-off-by: Olivier Martin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13249 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/PrePi/PeiMPCore.inf | 1 - ArmPlatformPkg/PrePi/PeiUniCore.inf | 4 ++-- ArmPlatformPkg/PrePi/PrePi.c | 8 ++++---- 3 files changed, 6 insertions(+), 7 deletions(-) (limited to 'ArmPlatformPkg/PrePi') diff --git a/ArmPlatformPkg/PrePi/PeiMPCore.inf b/ArmPlatformPkg/PrePi/PeiMPCore.inf index 4b05583779..92c1d81f87 100755 --- a/ArmPlatformPkg/PrePi/PeiMPCore.inf +++ b/ArmPlatformPkg/PrePi/PeiMPCore.inf @@ -38,7 +38,6 @@ BaseLib DebugLib DebugAgentLib - ArmCpuLib ArmLib ArmGicLib IoLib diff --git a/ArmPlatformPkg/PrePi/PeiUniCore.inf b/ArmPlatformPkg/PrePi/PeiUniCore.inf index 2d3617fd67..cfd40bc155 100755 --- a/ArmPlatformPkg/PrePi/PeiUniCore.inf +++ b/ArmPlatformPkg/PrePi/PeiUniCore.inf @@ -1,6 +1,7 @@ #/** @file # -# Copyright (c) 2011, ARM Ltd. All rights reserved.
+# Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
+# # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -38,7 +39,6 @@ BaseLib DebugLib DebugAgentLib - ArmCpuLib ArmLib IoLib TimerLib diff --git a/ArmPlatformPkg/PrePi/PrePi.c b/ArmPlatformPkg/PrePi/PrePi.c index f3cb3a121f..5090c25123 100755 --- a/ArmPlatformPkg/PrePi/PrePi.c +++ b/ArmPlatformPkg/PrePi/PrePi.c @@ -14,7 +14,6 @@ #include -#include #include #include #include @@ -204,11 +203,12 @@ CEntryPoint ( if (IS_PRIMARY_CORE(MpId)) { mGlobalVariableBase = GlobalVariableBase; if (ArmIsMpCore()) { - ArmCpuSynchronizeSignal (ARM_CPU_EVENT_DEFAULT); + // Signal the Global Variable Region is defined (event: ARM_CPU_EVENT_DEFAULT) + ArmCallSEV (); } } else { - // Wait the Primay core has defined the address of the Global Variable region - ArmCpuSynchronizeWait (ARM_CPU_EVENT_DEFAULT); + // Wait the Primay core has defined the address of the Global Variable region (event: ARM_CPU_EVENT_DEFAULT) + ArmCallWFE (); } } -- cgit v1.2.3