diff options
author | Jeff Fan <jeff.fan@intel.com> | 2016-05-24 21:25:17 +0800 |
---|---|---|
committer | Hao Wu <hao.a.wu@intel.com> | 2016-07-14 15:50:56 +0800 |
commit | cd507cc1eb02f15abf4645b7c861d45b38f003f6 (patch) | |
tree | ae7e7129b52d2bbd6e478c1f222c9445b56ba63f /UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c | |
parent | a42818739fa5c46789a972f42907f4a1afb1698c (diff) | |
download | edk2-cd507cc1eb02f15abf4645b7c861d45b38f003f6.tar.gz edk2-cd507cc1eb02f15abf4645b7c861d45b38f003f6.tar.bz2 edk2-cd507cc1eb02f15abf4645b7c861d45b38f003f6.zip |
UefiCpuPkg/ExceptionLib: Update RegisterCpuInterruptHandlerWorker()
Add parameter CpuExceptionData for RegisterCpuInterruptHandlerWorker().
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
(cherry picked from commit 670f13af6051dc7b8dcdaf9e1ec8014e122f41b7)
Diffstat (limited to 'UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c')
-rw-r--r-- | UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c b/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c index 4a3aad896d..c738280413 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c @@ -262,10 +262,11 @@ InitializeCpuExceptionHandlersWorker ( /**
Registers a function to be called from the processor interrupt handler.
- @param[in] InterruptType Defines which interrupt or exception to hook.
- @param[in] InterruptHandler A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called
- when a processor interrupt occurs. If this parameter is NULL, then the handler
- will be uninstalled.
+ @param[in] InterruptType Defines which interrupt or exception to hook.
+ @param[in] InterruptHandler A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called
+ when a processor interrupt occurs. If this parameter is NULL, then the handler
+ will be uninstalled
+ @param[in] ExceptionHandlerData Pointer to exception handler data.
@retval EFI_SUCCESS The handler for the processor interrupt was successfully installed or uninstalled.
@retval EFI_ALREADY_STARTED InterruptHandler is not NULL, and a handler for InterruptType was
@@ -278,23 +279,32 @@ InitializeCpuExceptionHandlersWorker ( EFI_STATUS
RegisterCpuInterruptHandlerWorker (
IN EFI_EXCEPTION_TYPE InterruptType,
- IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler
+ IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler,
+ IN EXCEPTION_HANDLER_DATA *ExceptionHandlerData
)
{
- if (InterruptType < 0 || InterruptType >= (EFI_EXCEPTION_TYPE)mEnabledInterruptNum ||
- mReservedVectors[InterruptType].Attribute == EFI_VECTOR_HANDOFF_DO_NOT_HOOK) {
+ UINTN EnabledInterruptNum;
+ RESERVED_VECTORS_DATA *ReservedVectors;
+ EFI_CPU_INTERRUPT_HANDLER *ExternalInterruptHandler;
+
+ EnabledInterruptNum = ExceptionHandlerData->IdtEntryCount;
+ ReservedVectors = ExceptionHandlerData->ReservedVectors;
+ ExternalInterruptHandler = ExceptionHandlerData->ExternalInterruptHandler;
+
+ if (InterruptType < 0 || InterruptType >= (EFI_EXCEPTION_TYPE)EnabledInterruptNum ||
+ ReservedVectors[InterruptType].Attribute == EFI_VECTOR_HANDOFF_DO_NOT_HOOK) {
return EFI_UNSUPPORTED;
}
- if (InterruptHandler == NULL && mExternalInterruptHandler[InterruptType] == NULL) {
+ if (InterruptHandler == NULL && ExternalInterruptHandler[InterruptType] == NULL) {
return EFI_INVALID_PARAMETER;
}
- if (InterruptHandler != NULL && mExternalInterruptHandler[InterruptType] != NULL) {
+ if (InterruptHandler != NULL && ExternalInterruptHandler[InterruptType] != NULL) {
return EFI_ALREADY_STARTED;
}
- mExternalInterruptHandler[InterruptType] = InterruptHandler;
+ ExternalInterruptHandler[InterruptType] = InterruptHandler;
return EFI_SUCCESS;
}
|