WhoAmI\r
};\r
\r
+/**\r
+ Get Mp Service Lock.\r
+\r
+ @param CpuData the pointer to CPU_DATA_BLOCK of specified processor\r
+\r
+**/\r
+VOID\r
+GetMpSpinLock (\r
+ IN CPU_DATA_BLOCK *CpuData\r
+ )\r
+{\r
+ while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
+ CpuPause ();\r
+ }\r
+}\r
+\r
+/**\r
+ Release Mp Service Lock.\r
+\r
+ @param CpuData the pointer to CPU_DATA_BLOCK of specified processor\r
+\r
+**/\r
+VOID\r
+ReleaseMpSpinLock (\r
+ IN CPU_DATA_BLOCK *CpuData\r
+ )\r
+{\r
+ ReleaseSpinLock (&CpuData->CpuDataLock);\r
+}\r
+\r
/**\r
Check whether caller processor is BSP.\r
\r
{\r
CPU_STATE State;\r
\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
State = CpuData->State;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
\r
return State;\r
}\r
IN CPU_STATE State\r
)\r
{\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
CpuData->State = State;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
}\r
\r
/**\r
IN VOID *ProcedureArgument\r
)\r
{\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
CpuData->Parameter = ProcedureArgument;\r
CpuData->Procedure = Procedure;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
}\r
\r
/**\r
{\r
UINT32 Ret;\r
\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
Ret = CpuData->Info.StatusFlag & Flags;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
\r
return !!(Ret);\r
}\r
IN UINT32 Flags\r
)\r
{\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
CpuData->Info.StatusFlag |= Flags;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
}\r
\r
/**\r
IN UINT32 Flags\r
)\r
{\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
CpuData->Info.StatusFlag &= ~Flags;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
}\r
\r
/**\r
AsmApDoneWithCommonStack ();\r
\r
while (TRUE) {\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
ProcedureArgument = CpuData->Parameter;\r
Procedure = CpuData->Procedure;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
+ ReleaseMpSpinLock (CpuData);\r
\r
if (Procedure != NULL) {\r
Procedure (ProcedureArgument);\r
\r
- while (!AcquireSpinLockOrFail (&CpuData->CpuDataLock)) {\r
- CpuPause ();\r
- }\r
-\r
+ GetMpSpinLock (CpuData);\r
CpuData->Procedure = NULL;\r
- ReleaseSpinLock (&CpuData->CpuDataLock);\r
-\r
- SetApState (CpuData, CpuStateFinished);\r
+ CpuData->State = CpuStateFinished;\r
+ ReleaseMpSpinLock (CpuData);\r
}\r
\r
CpuPause ();\r