/** @file\r
- IPF specific debug support functions\r
+ IPF specific functions to support Debug Support protocol.\r
\r
Copyright (c) 2006 - 2008, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
\r
**/\r
\r
-//\r
-// private header files\r
-//\r
#include "PlDebugSupport.h"\r
\r
BOOLEAN mInHandler = FALSE;\r
\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
+ Must be public because it's referenced from DebugSuport.c\r
\r
@param ImageHandle The firmware allocated handle for the EFI image.\r
\r
\r
/**\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
+ exception dispatcher. \r
+\r
+ Must be public because it's referenced from AsmFuncs.s.\r
\r
- @param ExceptionType Exception Type\r
- @param Context System Context\r
+ @param ExceptionType Specifies which processor exception.\r
+ @param Context System Context.\r
**/\r
VOID\r
CommonHandler (\r
/**\r
This is the worker function that uninstalls and removes all handlers.\r
\r
- @param ExceptionType Exception Type\r
- @param NewBundles New Boundles\r
- @param NewCallback New Callback\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
@retval EFI_ALEADY_STARTED Ivt already hooked.\r
- @retval others Indicates the request was not satisfied.\r
@retval EFI_SUCCESS Successfully uninstalled.\r
\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
- @param ExceptionType Exception Type\r
- @param NewBundles New Boundles\r
- @param NewCallback New Callback\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
/**\r
Restores original IVT contents when unregistering a callback function.\r
\r
- @param ExceptionType Exception Type\r
+ @param ExceptionType Specifies which processor exception.\r
\r
**/\r
VOID\r
\r
Records new callback in IvtEntryTable.\r
\r
- @param NewCallback New Callback\r
+ @param NewCallback A pointer to the interrupt handle.\r
\r
**/\r
VOID\r
IvtEntryTable[EXCEPT_IPF_EXTERNAL_INTERRUPT].RegisteredCallback = NULL;\r
}\r
\r
-//\r
-// The rest of the functions in this file are all member functions for the\r
-// DebugSupport protocol\r
-//\r
-\r
/**\r
- This is a DebugSupport protocol member function, hard\r
- coded to support only 1 processor for now.\r
-\r
- @param This The DebugSupport instance\r
- @param MaxProcessorIndex The maximuim supported processor index\r
+ Returns the maximum value that may be used for the ProcessorIndex parameter in\r
+ RegisterPeriodicCallback() and RegisterExceptionCallback(). \r
+ \r
+ Hard coded to support only 1 processor for now.\r
\r
- @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0.\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
+ @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0.\r
\r
**/\r
EFI_STATUS\r
}\r
\r
/**\r
- DebugSupport protocol member function.\r
-\r
- @param This The DebugSupport instance\r
- @param ProcessorIndex Which processor the callback applies to.\r
- @param PeriodicCallback Callback function\r
-\r
- @retval EFI_SUCCESS Indicates the callback was registered.\r
- @retval others Callback was not registered.\r
-\r
+ Registers a function to be called back periodically in interrupt context.\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
}\r
\r
/**\r
- DebugSupport protocol member function.\r
-\r
- @param This The DebugSupport instance\r
- @param ProcessorIndex Which processor the callback applies to.\r
- @param NewCallback Callback function\r
- @param ExceptionType Which exception to hook\r
-\r
- @retval EFI_SUCCESS Indicates the callback was registered.\r
- @retval others Callback was not registered.\r
-\r
+ Registers a function to be called when a given processor exception occurs.\r
+\r
+ This code executes in boot services context.\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
}\r
\r
/**\r
- DebugSupport protocol member function. Calls assembly routine to flush cache.\r
-\r
- @param This The DebugSupport instance\r
- @param ProcessorIndex Which processor the callback applies to.\r
- @param Start Physical base of the memory range to be invalidated\r
- @param Length mininum number of bytes in instruction cache to invalidate\r
-\r
- @retval EFI_SUCCESS Always returned.\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
+ @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
+ @retval EFI_SUCCESS Always returned.\r
\r
**/\r
EFI_STATUS\r