// we need to make sure the each fields offset same in different\r
// architecture.\r
//\r
+#pragma pack (1)\r
typedef struct {\r
UINT32 InitialApicId;\r
UINT32 ApicId;\r
UINT32 Health;\r
- UINT32 ApTopOfStack;\r
+ UINT64 ApTopOfStack;\r
} CPU_INFO_IN_HOB;\r
+#pragma pack ()\r
\r
//\r
// AP reset code information including code address and size,\r
UINT16 PmCodeSegment;\r
CPU_AP_DATA *CpuData;\r
volatile MP_CPU_EXCHANGE_INFO *MpCpuExchangeInfo;\r
+\r
+ UINT32 CurrentTimerCount;\r
+ UINTN DivideValue;\r
+ UINT8 Vector;\r
+ BOOLEAN PeriodicMode;\r
+ BOOLEAN TimerInterruptState;\r
};\r
\r
extern EFI_GUID mCpuInitMpLibHobGuid;\r
(EFIAPI * ASM_RELOCATE_AP_LOOP) (\r
IN BOOLEAN MwaitSupport,\r
IN UINTN ApTargetCState,\r
- IN UINTN PmCodeSegment\r
+ IN UINTN PmCodeSegment,\r
+ IN UINTN TopOfApStack,\r
+ IN UINTN NumberToFinish\r
);\r
\r
/**\r
simultaneously.\r
@param[in] WaitEvent The event created by the caller with CreateEvent()\r
service.\r
- @param[in] TimeoutInMicrosecsond Indicates the time limit in microseconds for\r
+ @param[in] TimeoutInMicroseconds Indicates the time limit in microseconds for\r
APs to return from Procedure, either for\r
blocking or non-blocking mode.\r
@param[in] ProcedureArgument The parameter passed into Procedure for\r
@param[in] ProcessorNumber The handle number of the AP.\r
@param[in] WaitEvent The event created by the caller with CreateEvent()\r
service.\r
- @param[in] TimeoutInMicrosecsond Indicates the time limit in microseconds for\r
+ @param[in] TimeoutInMicroseconds Indicates the time limit in microseconds for\r
APs to return from Procedure, either for\r
blocking or non-blocking mode.\r
@param[in] ProcedureArgument The parameter passed into Procedure for\r
IN CPU_MP_DATA *CpuMpData\r
);\r
\r
+/**\r
+ Enable Debug Agent to support source debugging on AP function.\r
+\r
+**/\r
+VOID\r
+EnableDebugAgent (\r
+ VOID\r
+ );\r
+\r
#endif\r
\r