]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h
UefiCpuPkg/RegisterCpuFeaturesLib: Remove static type
[mirror_edk2.git] / UefiCpuPkg / Library / CpuExceptionHandlerLib / CpuExceptionCommon.h
index 99be61f860b4931357787dc28d2c4bbfcacfef8e..4639ed2d9073758d062211659b3607798d5e5df3 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
@@ -50,7 +55,6 @@ typedef struct {
 extern CONST UINT32                mErrorCodeFlag;\r
 extern CONST UINTN                 mImageAlignSize;\r
 extern CONST UINTN                 mDoFarReturnFlag;\r
-extern RESERVED_VECTORS_DATA       *mReservedVectors;\r
 \r
 /**\r
   Return address map of exception handler template so that C code can generate\r
@@ -152,10 +156,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,7 +173,8 @@ 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
@@ -190,27 +196,29 @@ UpdateIdtTable (
 /**\r
   Save CPU exception context when handling EFI_VECTOR_HANDOFF_HOOK_AFTER case.\r
 \r
-  @param[in] ExceptionType  Exception type.\r
-  @param[in] SystemContext  Pointer to EFI_SYSTEM_CONTEXT.\r
-\r
+  @param[in] ExceptionType        Exception type.\r
+  @param[in] SystemContext        Pointer to EFI_SYSTEM_CONTEXT.\r
+  @param[in] ExceptionHandlerData Pointer to exception handler data.\r
 **/\r
 VOID\r
 ArchSaveExceptionContext (\r
-  IN UINTN                ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext \r
+  IN UINTN                        ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
   );\r
 \r
 /**\r
   Restore CPU exception context when handling EFI_VECTOR_HANDOFF_HOOK_AFTER case.\r
 \r
-  @param[in] ExceptionType  Exception type.\r
-  @param[in] SystemContext  Pointer to EFI_SYSTEM_CONTEXT.\r
-\r
+  @param[in] ExceptionType        Exception type.\r
+  @param[in] SystemContext        Pointer to EFI_SYSTEM_CONTEXT.\r
+  @param[in] ExceptionHandlerData Pointer to exception handler data.\r
 **/\r
 VOID\r
 ArchRestoreExceptionContext (\r
-  IN UINTN                ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext \r
+  IN UINTN                        ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -259,5 +267,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