]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/CpuDxe/CpuMp.h
UefiCpuPkg/CpuDxe: Consume MpInitLib to produce CPU MP Protocol services
[mirror_edk2.git] / UefiCpuPkg / CpuDxe / CpuMp.h
index 2b1717d4107453b39d73c703443476d731bf3380..1e204f34565bbaa58b1084c4f5883979bf88038f 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   CPU DXE MP support\r
 \r
-  Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -15,6 +15,8 @@
 #ifndef _CPU_MP_H_\r
 #define _CPU_MP_H_\r
 \r
+#include <Ppi/SecPlatformInformation.h>\r
+#include <Ppi/SecPlatformInformation2.h>\r
 #include <Protocol/MpService.h>\r
 #include <Library/SynchronizationLib.h>\r
 \r
@@ -79,8 +81,9 @@ typedef enum {
   CpuStateIdle,\r
   CpuStateBlocked,\r
   CpuStateReady,\r
-  CpuStateBuzy,\r
-  CpuStateFinished\r
+  CpuStateBusy,\r
+  CpuStateFinished,\r
+  CpuStateSleeping\r
 } CPU_STATE;\r
 \r
 /**\r
@@ -90,15 +93,17 @@ typedef enum {
 typedef struct {\r
   EFI_PROCESSOR_INFORMATION      Info;\r
   SPIN_LOCK                      CpuDataLock;\r
+  INTN                           LockSelf;\r
   volatile CPU_STATE             State;\r
 \r
-  EFI_AP_PROCEDURE               Procedure;\r
-  VOID                           *Parameter;\r
+  volatile EFI_AP_PROCEDURE      Procedure;\r
+  volatile VOID*                 Parameter;\r
   BOOLEAN                        *Finished;\r
   INTN                           Timeout;\r
   EFI_EVENT                      WaitEvent;\r
   BOOLEAN                        TimeoutActive;\r
   EFI_EVENT                      CheckThisAPEvent;\r
+  VOID                           *TopOfStack;\r
 } CPU_DATA_BLOCK;\r
 \r
 /**\r
@@ -622,5 +627,32 @@ FreeApStartupCode (
   VOID\r
   );\r
 \r
+/**\r
+  Resets the Application Processor and directs it to jump to the\r
+  specified routine.\r
+\r
+  The processor jumps to this code in flat mode, but the processor's\r
+  stack is not initialized.\r
+\r
+  @param ProcessorId           the AP of ProcessorId was reset\r
+**/\r
+VOID\r
+ResetApStackless (\r
+  IN UINT32 ProcessorId\r
+  );\r
+\r
+/**\r
+  A minimal wrapper function that allows MtrrSetAllMtrrs() to be passed to\r
+  EFI_MP_SERVICES_PROTOCOL.StartupAllAPs() as Procedure.\r
+\r
+  @param[in] Buffer  Pointer to an MTRR_SETTINGS object, to be passed to\r
+                     MtrrSetAllMtrrs().\r
+**/\r
+VOID\r
+EFIAPI\r
+SetMtrrsFromBuffer (\r
+  IN VOID *Buffer\r
+  );\r
+\r
 #endif // _CPU_MP_H_\r
 \r