]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h
MdeModulePkg: Clean up source files
[mirror_edk2.git] / MdeModulePkg / Universal / DebugSupportDxe / Ipf / PlDebugSupport.h
index 4d993bcaefcc2608188b682e61bdf1e710a915d6..1701fbff42e59ac913d39dd423b373b95c6c24e3 100644 (file)
@@ -1,20 +1,19 @@
-/**@file\r
-  IPF specific debugsupport types, macros, and definitions.\r
-  \r
-Copyright (c) 2004 - 2006 Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+/** @file\r
+  IPF specific types, macros, and definitions for Debug Support Driver.\r
 \r
-**/\r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-#ifndef _PLDEBUG_SUPPORT_H\r
-#define _PLDEBUG_SUPPORT_H\r
+**/\r
 \r
+#ifndef _PLDEBUG_SUPPORT_H_\r
+#define _PLDEBUG_SUPPORT_H_\r
 \r
 #include <Uefi.h>\r
 \r
@@ -26,262 +25,197 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/PcdLib.h>\r
 \r
 #define DISABLE_INTERRUPTS  0UL\r
 \r
-//\r
-// The remaining definitions comprise the protocol members.\r
-//\r
 #define EFI_ISA IsaIpf\r
 \r
-//\r
-// processor specific functions that must be public\r
-//\r
-EFI_STATUS\r
-plInitializeDebugSupportDriver (\r
-  VOID\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  IPF specific DebugSupport driver initialization.  Must be public because it's\r
-  referenced from DebugSupport.c\r
+typedef struct {\r
+  UINT64  Low;\r
+  UINT64  High;\r
+} BUNDLE;\r
 \r
-Arguments:\r
+typedef\r
+VOID\r
+(*CALLBACK_FUNC) (\r
+  );\r
 \r
-Returns:\r
+/**\r
+  IPF specific DebugSupport driver initialization.\r
 \r
-  EFI_SUCCESS\r
+  Must be public because it's referenced from DebugSupport.c\r
 \r
---*/\r
-;\r
+  @retval  EFI_SUCCESS     Always.\r
 \r
+**/\r
 EFI_STATUS\r
-EFIAPI\r
-plUnloadDebugSupportDriver (\r
-  IN EFI_HANDLE                   ImageHandle\r
-  )\r
-/*++\r
+PlInitializeDebugSupportDriver (\r
+  VOID\r
+  );\r
 \r
-Routine Description:\r
+/**\r
   Unload handler that is called during UnloadImage() - deallocates pool memory\r
-  used by the driver.  Must be public because it's referenced from DebugSuport.c\r
+  used by the driver.\r
 \r
-Arguments:\r
-  ImageHandle - Image handle\r
+  Must be public because it's referenced from DebugSuport.c\r
 \r
-Returns:\r
+  @param  ImageHandle    The firmware allocated handle for the EFI image.\r
 \r
-  EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered.\r
+  @retval EFI_SUCCESS    Always.\r
 \r
---*/\r
-;\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PlUnloadDebugSupportDriver (\r
+  IN EFI_HANDLE                   ImageHandle\r
+  );\r
+\r
+/**\r
+  C callable function to obtain the current value of IVA.\r
 \r
-//\r
-// Assembly worker functions and data referenced from PlDebugSupport.c\r
-//\r
+  @return Current value of IVA.\r
+\r
+**/\r
 VOID  *\r
 GetIva (\r
   VOID\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  C callable function to obtain the current value of IVA\r
-\r
-Arguments:\r
-\r
-  None\r
-\r
-Returns:\r
-\r
-  Current value if IVA\r
-\r
---*/\r
-;\r
+/**\r
+  C callable function that HookStub will be copied from it's loaded location into the IVT when\r
+  an IVT entry is hooked.\r
 \r
+**/\r
 VOID\r
 HookStub (\r
   VOID\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  HookStub will be copied from it's loaded location into the IVT when\r
-  an IVT entry is hooked.\r
-\r
-Arguments:\r
-\r
-  None\r
+  );\r
 \r
-Returns:\r
-\r
-  None\r
-\r
---*/\r
-;\r
+/**\r
+  C callable function to chain an interrupt handler.\r
 \r
+**/\r
 VOID\r
 ChainHandler (\r
   VOID\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Chains an interrupt handler\r
-\r
-Arguments:\r
+  );\r
 \r
-  None\r
-\r
-Returns:\r
-\r
-  None\r
-\r
---*/\r
-;\r
+/**\r
+  C callable function to unchain an interrupt handler.\r
 \r
+**/\r
 VOID\r
 UnchainHandler (\r
   VOID\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Unchains an interrupt handler\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  C callable function to enable/disable interrupts.\r
 \r
-  None\r
+  @param  NewInterruptState   New Interrupt State.\r
 \r
-Returns:\r
-\r
-  None\r
-\r
---*/\r
-;\r
+  @return Previous state of psr.ic.\r
 \r
+**/\r
 UINT64\r
 ProgramInterruptFlags (\r
   IN UINT64                       NewInterruptState\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  C callable function to enable/disable interrupts\r
-\r
-Arguments:\r
+  );\r
 \r
-  NewInterruptState - New Interrupt State\r
+/**\r
+  Flushes instruction cache for specified number of bytes.\r
 \r
-Returns:\r
-\r
-  Previous state of psr.ic\r
-\r
---*/\r
-;\r
+  @param  StartAddress     Cache Start Address.\r
+  @param  SizeInBytes      Cache Size.\r
 \r
+**/\r
 VOID\r
 InstructionCacheFlush (\r
   IN VOID    *StartAddress,\r
   IN UINTN   SizeInBytes\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  Flushes instruction cache for specified number of bytes\r
+/**\r
+  Returns the maximum value that may be used for the ProcessorIndex parameter in\r
+  RegisterPeriodicCallback() and RegisterExceptionCallback().\r
 \r
-Arguments:\r
+  Hard coded to support only 1 processor for now.\r
 \r
-  StartAddress  - Cache Start Address\r
-  SizeInBytes   - Cache Size\r
+  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
+  @param  MaxProcessorIndex     Pointer to a caller-allocated UINTN in which the maximum supported\r
+                                processor index is returned. Always 0 returned.\r
 \r
-Returns:\r
-\r
-  None\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS           Always returned with **MaxProcessorIndex set to 0.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 GetMaximumProcessorIndex (\r
   IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,\r
   OUT UINTN                       *MaxProcessorIndex\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description: This is a DebugSupport protocol member function.  Hard\r
-  coded to support only 1 processor for now.\r
+/**\r
+  Registers a function to be called back periodically in interrupt context.\r
 \r
-Arguments:\r
-  This              - The DebugSupport instance\r
-  MaxProcessorIndex - The maximuim supported processor index\r
-\r
-Returns:\r
-  Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0\r
-\r
---*/\r
-;\r
+  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
+  @param  ProcessorIndex        Specifies which processor the callback function applies to.\r
+  @param  PeriodicCallback      A pointer to a function of type PERIODIC_CALLBACK that is the main\r
+                                periodic entry point of the debug agent.\r
 \r
+  @retval EFI_SUCCESS           The function completed successfully.\r
+  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback\r
+                                function was previously registered.\r
+  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback\r
+                                function.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 RegisterPeriodicCallback (\r
   IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,\r
   IN UINTN                        ProcessorIndex,\r
   IN EFI_PERIODIC_CALLBACK        PeriodicCallback\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
-  DebugSupport protocol member function\r
+/**\r
+  Registers a function to be called when a given processor exception occurs.\r
 \r
-Arguments:\r
-  This             - The DebugSupport instance\r
-  ProcessorIndex   - Which processor the callback applies to.\r
-  PeriodicCallback - Callback function\r
+  This code executes in boot services context.\r
 \r
-Returns:\r
-\r
-  EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered.\r
-\r
---*/\r
-;\r
+  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
+  @param  ProcessorIndex        Specifies which processor the callback function applies to.\r
+  @param  ExceptionCallback     A pointer to a function of type EXCEPTION_CALLBACK that is called\r
+                                when the processor exception specified by ExceptionType occurs.\r
+  @param  ExceptionType         Specifies which processor exception to hook.\r
 \r
+  @retval EFI_SUCCESS           The function completed successfully.\r
+  @retval EFI_ALREADY_STARTED   Non-NULL PeriodicCallback parameter when a callback\r
+                                function was previously registered.\r
+  @retval EFI_OUT_OF_RESOURCES  System has insufficient memory resources to register new callback\r
+                                function.\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 RegisterExceptionCallback (\r
   IN EFI_DEBUG_SUPPORT_PROTOCOL   *This,\r
   IN UINTN                        ProcessorIndex,\r
-  IN EFI_EXCEPTION_CALLBACK       NewHandler,\r
+  IN EFI_EXCEPTION_CALLBACK       ExceptionCallback,\r
   IN EFI_EXCEPTION_TYPE           ExceptionType\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
-  DebugSupport protocol member function\r
+/**\r
+  Invalidates processor instruction cache for a memory range. Subsequent execution in this range\r
+  causes a fresh memory fetch to retrieve code to be executed.\r
 \r
-Arguments:\r
-  This             - The DebugSupport instance\r
-  ProcessorIndex   - Which processor the callback applies to.\r
-  NewCallback      - Callback function\r
-  ExceptionType    - Which exception to hook\r
+  @param  This                  A pointer to the EFI_DEBUG_SUPPORT_PROTOCOL instance.\r
+  @param  ProcessorIndex        Specifies which processor's instruction cache is to be invalidated.\r
+  @param  Start                 Specifies the physical base of the memory range to be invalidated.\r
+  @param  Length                Specifies the minimum number of bytes in the processor's instruction\r
+                                cache to invalidate.\r
 \r
-Returns:\r
-\r
-  EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered.\r
-\r
---*/\r
-;\r
+  @retval EFI_SUCCESS           Always returned.\r
 \r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 InvalidateInstructionCache (\r
@@ -289,44 +223,102 @@ InvalidateInstructionCache (
   IN UINTN                        ProcessorIndex,\r
   IN VOID                         *Start,\r
   IN UINTN                        Length\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
-  DebugSupport protocol member function.  Calls assembly routine to flush cache.\r
-\r
-Arguments:\r
-  This             - The DebugSupport instance\r
-  ProcessorIndex   - Which processor the callback applies to.\r
-  Start            - Physical base of the memory range to be invalidated\r
-  Length           - mininum number of bytes in instruction cache to invalidate\r
-\r
-Returns:\r
-  EFI_SUCCESS\r
+/**\r
+  C routine that is called for all registered exceptions.  This is the main\r
+  exception dispatcher.\r
 \r
---*/\r
-;\r
+  Must be public because it's referenced from AsmFuncs.s.\r
 \r
+  @param  ExceptionType        Specifies which processor exception.\r
+  @param  Context              System Context.\r
+**/\r
 VOID\r
 CommonHandler (\r
   IN EFI_EXCEPTION_TYPE ExceptionType,\r
   IN EFI_SYSTEM_CONTEXT Context\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
-  C routine that is called for all registered exceptions.  This is the main\r
-  exception dispatcher.  Must be public because it's referenced from AsmFuncs.s.\r
+/**\r
+  This is the worker function that uninstalls and removes all handlers.\r
+\r
+  @param  ExceptionType     Specifies which processor exception.\r
+  @param  NewBundles        New Boundles.\r
+  @param  NewCallback       A pointer to the new function to be registered.\r
 \r
-Arguments:\r
-  ExceptionType - Exception Type\r
-  Context       - System Context\r
+  @retval EFI_ALEADY_STARTED Ivt already hooked.\r
+  @retval EFI_SUCCESS        Successfully uninstalled.\r
+\r
+**/\r
+EFI_STATUS\r
+ManageIvtEntryTable (\r
+  IN  EFI_EXCEPTION_TYPE    ExceptionType,\r
+  IN  BUNDLE                NewBundles[4],\r
+  IN  CALLBACK_FUNC         NewCallback\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Saves original IVT contents and inserts a few new bundles which are fixed up\r
+  to store the ExceptionType and then call the common handler.\r
 \r
-  Nothing\r
-  \r
---*/\r
-;\r
+  @param  ExceptionType      Specifies which processor exception.\r
+  @param  NewBundles         New Boundles.\r
+  @param  NewCallback        A pointer to the new function to be hooked.\r
+\r
+**/\r
+VOID\r
+HookEntry (\r
+  IN  EFI_EXCEPTION_TYPE    ExceptionType,\r
+  IN  BUNDLE                NewBundles[4],\r
+  IN  CALLBACK_FUNC         NewCallback\r
+  );\r
+\r
+/**\r
+  Restores original IVT contents when unregistering a callback function.\r
+\r
+  @param  ExceptionType     Specifies which processor exception.\r
+\r
+**/\r
+VOID\r
+UnhookEntry (\r
+  IN  EFI_EXCEPTION_TYPE    ExceptionType\r
+  );\r
+\r
+/**\r
+  Sets up cache flush and calls assembly function to chain external interrupt.\r
+\r
+  Records new callback in IvtEntryTable.\r
+\r
+  @param  NewCallback     A pointer to the interrupt handle.\r
+\r
+**/\r
+VOID\r
+ChainExternalInterrupt (\r
+  IN  CALLBACK_FUNC         NewCallback\r
+  );\r
+\r
+/**\r
+  Sets up cache flush and calls assembly function to restore external interrupt.\r
+  Removes registered callback from IvtEntryTable.\r
+\r
+**/\r
+VOID\r
+UnchainExternalInterrupt (\r
+  VOID\r
+  );\r
+\r
+/**\r
+  Given an integer number, return the physical address of the entry point in the IFT.\r
+\r
+  @param  HandlerIndex       Index of the Handler\r
+  @param  EntryPoint         IFT Entrypoint\r
+\r
+**/\r
+VOID\r
+GetHandlerEntryPoint (\r
+  UINTN                     HandlerIndex,\r
+  VOID                      **EntryPoint\r
+  );\r
 \r
 #endif\r