]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg/ExceptionLib: Update InitializeCpuExceptionHandlersWorker
authorJeff Fan <jeff.fan@intel.com>
Tue, 24 May 2016 13:00:02 +0000 (21:00 +0800)
committerJeff Fan <jeff.fan@intel.com>
Wed, 1 Jun 2016 07:31:40 +0000 (15:31 +0800)
Add parameter CpuExceptionData for InitializeCpuExceptionHandlersWorker().

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>
UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h
UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmException.c

index 0757aef7b76b2625792c95f41a0707911de96988..812469babe7ce95d1c0a26cd6788f04abdd5412e 100644 (file)
@@ -134,7 +134,8 @@ DumpCpuContent (
 /**\r
   Internal worker function to initialize exception handler.\r
 \r
-  @param[in]  VectorInfo    Pointer to reserved vector list.\r
+  @param[in]      VectorInfo            Pointer to reserved vector list.\r
+  @param[in, out] ExceptionHandlerData  Pointer to exception handler data.\r
   \r
   @retval EFI_SUCCESS           CPU Exception Entries have been successfully initialized \r
                                 with default exception handlers.\r
@@ -144,7 +145,8 @@ DumpCpuContent (
 **/\r
 EFI_STATUS\r
 InitializeCpuExceptionHandlersWorker (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL,\r
+  IN OUT EXCEPTION_HANDLER_DATA    *ExceptionHandlerData\r
   );\r
 \r
 /**\r
index 6d163367ab9004d0238b2e15881e52d6f3e03bca..92de04ce08d879c9311cf3c54dca6cb6660a3285 100644 (file)
@@ -21,6 +21,8 @@ CONST UINTN    mDoFarReturnFlag  = 0;
 \r
 extern SPIN_LOCK                   mDisplayMessageSpinLock;\r
 extern EFI_CPU_INTERRUPT_HANDLER   *mExternalInterruptHandler;\r
+extern RESERVED_VECTORS_DATA       mReservedVectorsData[CPU_EXCEPTION_NUM];\r
+extern EFI_CPU_INTERRUPT_HANDLER   mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM];\r
 EXCEPTION_HANDLER_DATA      mExceptionHandlerData;\r
 \r
 /**\r
@@ -45,7 +47,10 @@ InitializeCpuExceptionHandlers (
   IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
   )\r
 {\r
-  return InitializeCpuExceptionHandlersWorker (VectorInfo);\r
+  mExceptionHandlerData.ReservedVectors          = mReservedVectorsData;\r
+  mExceptionHandlerData.ExternalInterruptHandler = mExternalInterruptHandlerTable;\r
+  InitializeSpinLock (&mExceptionHandlerData.DisplayMessageSpinLock);\r
+  return InitializeCpuExceptionHandlersWorker (VectorInfo, &mExceptionHandlerData);\r
 }\r
 \r
 /**\r
index cb180bd28c323b8472b040e7757287a9aab02900..0b12b6d84fedff2f01c8697e06e5765c2726e7d3 100644 (file)
@@ -201,7 +201,8 @@ UpdateIdtTable (
 /**\r
   Internal worker function to initialize exception handler.\r
 \r
-  @param[in]  VectorInfo    Pointer to reserved vector list.\r
+  @param[in]      VectorInfo            Pointer to reserved vector list.\r
+  @param[in, out] ExceptionHandlerData  Pointer to exception handler data.\r
   \r
   @retval EFI_SUCCESS           CPU Exception Entries have been successfully initialized \r
                                 with default exception handlers.\r
@@ -211,7 +212,8 @@ UpdateIdtTable (
 **/\r
 EFI_STATUS\r
 InitializeCpuExceptionHandlersWorker (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL,\r
+  IN OUT EXCEPTION_HANDLER_DATA    *ExceptionHandlerData\r
   )\r
 {\r
   EFI_STATUS                       Status;\r
@@ -219,11 +221,12 @@ InitializeCpuExceptionHandlersWorker (
   UINTN                            IdtEntryCount;\r
   EXCEPTION_HANDLER_TEMPLATE_MAP   TemplateMap;\r
   IA32_IDT_GATE_DESCRIPTOR         *IdtTable;\r
+  RESERVED_VECTORS_DATA            *ReservedVectors;\r
 \r
-  mReservedVectors = mReservedVectorsData;\r
-  SetMem ((VOID *) mReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM, 0xff);\r
+  ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
+  SetMem ((VOID *) ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM, 0xff);\r
   if (VectorInfo != NULL) {\r
-    Status = ReadAndVerifyVectorInfo (VectorInfo, mReservedVectors, CPU_EXCEPTION_NUM);\r
+    Status = ReadAndVerifyVectorInfo (VectorInfo, ReservedVectors, CPU_EXCEPTION_NUM);\r
     if (EFI_ERROR (Status)) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
index 3f9d001fd525dde640350ba7169af553631030eb..b88305d73ca50cbee7851276b36e43be7ddb737b 100644 (file)
@@ -17,6 +17,8 @@
 \r
 CONST UINTN   mDoFarReturnFlag   = 1; \r
 \r
+extern RESERVED_VECTORS_DATA       mReservedVectorsData[CPU_EXCEPTION_NUM];\r
+extern EFI_CPU_INTERRUPT_HANDLER   mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM];\r
 EXCEPTION_HANDLER_DATA      mExceptionHandlerData;\r
 /**\r
   Initializes all CPU exceptions entries and provides the default exception handlers.\r
@@ -40,7 +42,10 @@ InitializeCpuExceptionHandlers (
   IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
   )\r
 {\r
-  return InitializeCpuExceptionHandlersWorker (VectorInfo);\r
+  mExceptionHandlerData.ReservedVectors          = mReservedVectorsData;\r
+  mExceptionHandlerData.ExternalInterruptHandler = mExternalInterruptHandlerTable;\r
+  InitializeSpinLock (&mExceptionHandlerData.DisplayMessageSpinLock);\r
+  return InitializeCpuExceptionHandlersWorker (VectorInfo, &mExceptionHandlerData);\r
 }\r
 \r
 /**\r