/** @file\r
*\r
-* Copyright (c) 2011, ARM Limited. All rights reserved.\r
+* Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
*\r
* This program and the accompanying materials\r
* are licensed and made available under the terms and conditions of the BSD License\r
\r
// Initialize the Serial Port\r
SerialPortInitialize ();\r
- CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"UEFI firmware built at %a on %a\n\r",__TIME__, __DATE__);\r
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"UEFI firmware (version %s built at %a on %a)\n\r",\r
+ (CHAR16*)PcdGetPtr(PcdFirmwareVersionString), __TIME__, __DATE__);\r
SerialPortWrite ((UINT8 *) Buffer, CharCount);\r
\r
// Initialize the Debug Agent for Source Level Debugging\r
{\r
UINT64 StartTimeStamp;\r
\r
+ // Initialize the platform specific controllers\r
+ ArmPlatformInitialize (MpId);\r
+\r
if (IS_PRIMARY_CORE(MpId) && PerformanceMeasurementEnabled ()) {\r
// Initialize the Timer Library to setup the Timer HW controller\r
TimerConstructor ();\r
if (!IS_XIP()) {\r
if (IS_PRIMARY_CORE(MpId)) {\r
mGlobalVariableBase = GlobalVariableBase;\r
- ArmCpuSynchronizeSignal (ARM_CPU_EVENT_DEFAULT);\r
+ if (ArmIsMpCore()) {\r
+ ArmCpuSynchronizeSignal (ARM_CPU_EVENT_DEFAULT);\r
+ }\r
} else {\r
- // Wait the Primay core has defined the address of the Global Variable region\r
- ArmCpuSynchronizeWait (ARM_CPU_EVENT_DEFAULT);\r
+ // Wait the Primay core has defined the address of the Global Variable region\r
+ ArmCpuSynchronizeWait (ARM_CPU_EVENT_DEFAULT);\r
}\r
}\r
\r