diff --git a/UefiCpuPkg/CpuDxe/CpuMp.c b/UefiCpuPkg/CpuDxe/CpuMp.c index e5d2f5f7e2..fa0ef37b92 100644 --- a/UefiCpuPkg/CpuDxe/CpuMp.c +++ b/UefiCpuPkg/CpuDxe/CpuMp.c @@ -1193,7 +1193,7 @@ ProcessorToIdleState ( UINTN ProcessorNumber; CPU_DATA_BLOCK *CpuData; EFI_AP_PROCEDURE Procedure; - VOID *ProcedureArgument; + volatile VOID *ProcedureArgument; AsmApDoneWithCommonStack (); @@ -1231,7 +1231,7 @@ ProcessorToIdleState ( if (Procedure != NULL) { SetApState (CpuData, CpuStateBusy); - Procedure (ProcedureArgument); + Procedure ((VOID*) ProcedureArgument); GetMpSpinLock (CpuData); CpuData->Procedure = NULL; diff --git a/UefiCpuPkg/CpuDxe/CpuMp.h b/UefiCpuPkg/CpuDxe/CpuMp.h index cb3460f355..021b80821e 100644 --- a/UefiCpuPkg/CpuDxe/CpuMp.h +++ b/UefiCpuPkg/CpuDxe/CpuMp.h @@ -94,8 +94,8 @@ typedef struct { INTN LockSelf; volatile CPU_STATE State; - EFI_AP_PROCEDURE Procedure; - VOID *Parameter; + volatile EFI_AP_PROCEDURE Procedure; + volatile VOID* Parameter; BOOLEAN *Finished; INTN Timeout; EFI_EVENT WaitEvent;