/**\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
/**\r
Restore CPU exception context when handling EFI_VECTOR_HANDOFF_HOOK_AFTER case.\r
\r
- @param ExceptionType Exception type.\r
- @param SystemContext Pointer to EFI_SYSTEM_CONTEXT.\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
- SystemContext.SystemContextIa32->Eflags = mReservedVectors[ExceptionType].OldFlags;\r
- SystemContext.SystemContextIa32->Cs = mReservedVectors[ExceptionType].OldCs;\r
- SystemContext.SystemContextIa32->Eip = mReservedVectors[ExceptionType].OldIp;\r
- SystemContext.SystemContextIa32->ExceptionData = mReservedVectors[ExceptionType].ExceptionData;\r
+ RESERVED_VECTORS_DATA *ReservedVectors;\r
+\r
+ ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
+ SystemContext.SystemContextIa32->Eflags = ReservedVectors[ExceptionType].OldFlags;\r
+ SystemContext.SystemContextIa32->Cs = ReservedVectors[ExceptionType].OldCs;\r
+ SystemContext.SystemContextIa32->Eip = ReservedVectors[ExceptionType].OldIp;\r
+ SystemContext.SystemContextIa32->ExceptionData = ReservedVectors[ExceptionType].ExceptionData;\r
}\r
\r
/**\r
// Old IDT handler has been executed, then restore CPU exception content to\r
// run new exception handler.\r
//\r
- ArchRestoreExceptionContext (ExceptionType, SystemContext);\r
+ ArchRestoreExceptionContext (ExceptionType, SystemContext, ExceptionHandlerData);\r
//\r
// Rlease spin lock for ApicId\r
//\r
/**\r
Restore CPU exception context when handling EFI_VECTOR_HANDOFF_HOOK_AFTER case.\r
\r
- @param ExceptionType Exception type.\r
- @param SystemContext Pointer to EFI_SYSTEM_CONTEXT.\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
- SystemContext.SystemContextX64->Ss = mReservedVectors[ExceptionType].OldSs;\r
- SystemContext.SystemContextX64->Rsp = mReservedVectors[ExceptionType].OldSp;\r
- SystemContext.SystemContextX64->Rflags = mReservedVectors[ExceptionType].OldFlags;\r
- SystemContext.SystemContextX64->Cs = mReservedVectors[ExceptionType].OldCs;\r
- SystemContext.SystemContextX64->Rip = mReservedVectors[ExceptionType].OldIp;\r
- SystemContext.SystemContextX64->ExceptionData = mReservedVectors[ExceptionType].ExceptionData;\r
+ RESERVED_VECTORS_DATA *ReservedVectors;\r
+\r
+ ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
+ SystemContext.SystemContextX64->Ss = ReservedVectors[ExceptionType].OldSs;\r
+ SystemContext.SystemContextX64->Rsp = ReservedVectors[ExceptionType].OldSp;\r
+ SystemContext.SystemContextX64->Rflags = ReservedVectors[ExceptionType].OldFlags;\r
+ SystemContext.SystemContextX64->Cs = ReservedVectors[ExceptionType].OldCs;\r
+ SystemContext.SystemContextX64->Rip = ReservedVectors[ExceptionType].OldIp;\r
+ SystemContext.SystemContextX64->ExceptionData = ReservedVectors[ExceptionType].ExceptionData;\r
}\r
\r
/**\r