]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h
UefiCpuPkg/MpInitLib: Skip collect processor count if GUIDed HOB exist
[mirror_edk2.git] / UefiCpuPkg / Library / CpuExceptionHandlerLib / CpuExceptionCommon.h
index 812469babe7ce95d1c0a26cd6788f04abdd5412e..9c88012e0b51de0c57e39cc711c41a877789e23f 100644 (file)
 \r
 #include "ArchInterruptDefs.h"\r
 \r
+#define CPU_EXCEPTION_HANDLER_LIB_HOB_GUID \\r
+  { \\r
+    0xb21d9148, 0x9211, 0x4d8f, { 0xad, 0xd3, 0x66, 0xb1, 0x89, 0xc9, 0x2c, 0x83 } \\r
+  }\r
+\r
 //\r
 // Record exception handler information\r
 //\r
@@ -152,10 +157,11 @@ InitializeCpuExceptionHandlersWorker (
 /**\r
   Registers a function to be called from the processor interrupt handler.\r
 \r
-  @param[in]  InterruptType     Defines which interrupt or exception to hook.\r
-  @param[in]  InterruptHandler  A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called\r
-                                when a processor interrupt occurs. If this parameter is NULL, then the handler\r
-                                will be uninstalled.\r
+  @param[in]  InterruptType        Defines which interrupt or exception to hook.\r
+  @param[in]  InterruptHandler     A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called\r
+                                   when a processor interrupt occurs. If this parameter is NULL, then the handler\r
+                                   will be uninstalled\r
+  @param[in] ExceptionHandlerData  Pointer to exception handler data.\r
 \r
   @retval EFI_SUCCESS           The handler for the processor interrupt was successfully installed or uninstalled.\r
   @retval EFI_ALREADY_STARTED   InterruptHandler is not NULL, and a handler for InterruptType was\r
@@ -168,22 +174,24 @@ InitializeCpuExceptionHandlersWorker (
 EFI_STATUS\r
 RegisterCpuInterruptHandlerWorker (\r
   IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler,\r
+  IN EXCEPTION_HANDLER_DATA        *ExceptionHandlerData\r
   );\r
 \r
 /**\r
   Internal worker function to update IDT entries accordling to vector attributes.\r
 \r
-  @param[in] IdtTable       Pointer to IDT table.\r
-  @param[in] TemplateMap    Pointer to a buffer where the address map is returned.\r
-  @param[in] IdtEntryCount  IDT entries number to be updated.\r
+  @param[in] IdtTable              Pointer to IDT table.\r
+  @param[in] TemplateMap           Pointer to a buffer where the address map is\r
+                                   returned.\r
+  @param[in] ExceptionHandlerData  Pointer to exception handler data.\r
 \r
 **/\r
 VOID\r
 UpdateIdtTable (\r
   IN IA32_IDT_GATE_DESCRIPTOR        *IdtTable,\r
   IN EXCEPTION_HANDLER_TEMPLATE_MAP  *TemplateMap,\r
-  IN UINTN                           IdtEntryCount\r
+  IN EXCEPTION_HANDLER_DATA          *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -258,5 +266,19 @@ GetExceptionNameStr (
   IN EFI_EXCEPTION_TYPE          ExceptionType\r
   );\r
 \r
+/**\r
+  Internal worker function for common exception handler.\r
+\r
+  @param ExceptionType         Exception type.\r
+  @param SystemContext         Pointer to EFI_SYSTEM_CONTEXT.\r
+  @param ExceptionHandlerData  Pointer to exception handler data.\r
+**/\r
+VOID\r
+CommonExceptionHandlerWorker (\r
+  IN EFI_EXCEPTION_TYPE          ExceptionType, \r
+  IN EFI_SYSTEM_CONTEXT          SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA      *ExceptionHandlerData\r
+  );\r
+\r
 #endif\r
 \r