From 9e604fe42d90c05adb08cf86bc1843c436f523dc Mon Sep 17 00:00:00 2001 From: vanjeff Date: Wed, 5 Nov 2008 08:44:03 +0000 Subject: [PATCH] ECC clean up. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6405 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Console/ConSplitterDxe/ConSplitter.c | 4 +- .../ConSplitterDxe/ConSplitterGraphics.c | 2 +- .../Universal/Console/TerminalDxe/Terminal.h | 4 +- .../Universal/Console/TerminalDxe/Vtutf8.c | 2 - .../Universal/DebugPortDxe/DebugPort.c | 2 +- .../Universal/DebugSupportDxe/DebugSupport.c | 39 +- .../DebugSupportDxe/Ia32/PlDebugSupport.c | 316 ++++++--------- .../DebugSupportDxe/Ia32/PlDebugSupport.h | 289 +++++--------- .../DebugSupportDxe/Ipf/PlDebugSupport.c | 367 ++++++++---------- .../DebugSupportDxe/Ipf/PlDebugSupport.h | 300 +++++--------- .../DebugSupportDxe/X64/PlDebugSupport.c | 314 ++++++--------- .../DebugSupportDxe/X64/PlDebugSupport.h | 289 +++++--------- 12 files changed, 734 insertions(+), 1194 deletions(-) diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c index dacef61d45..67052b20b3 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.c @@ -2242,7 +2242,7 @@ ConSplitterAddOutputMode ( } /** - Reconstruct TextOutModeMap to get intersection of modes + Reconstruct TextOutModeMap to get intersection of modes. This routine reconstruct TextOutModeMap to get the intersection of modes for all console out devices. Because EFI/UEFI spec require @@ -2256,8 +2256,6 @@ ConSplitterAddOutputMode ( @param MaxMode Current max text mode @param CurrentMode Current text mode - @retval None - **/ VOID ConSplitterGetIntersection ( diff --git a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c index bb80120d38..5d0cb42ae7 100644 --- a/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c +++ b/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterGraphics.c @@ -30,7 +30,7 @@ CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL }; @param This Protocol instance pointer. @param Mode Are we in text of grahics mode. - @param GopExists TRUE if Console Spliter has found a GOP or UGA device + @param GopUgaExists TRUE if Console Spliter has found a GOP or UGA device @param StdInLocked TRUE if StdIn device is keyboard locked @retval EFI_SUCCESS Mode information returned. diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h index 862826c83e..57fdb07c18 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h @@ -586,7 +586,7 @@ TerminalConOutEnableCursor ( Test to see if this driver supports Controller. @param This Protocol instance pointer. - @param Controller Handle of device to test + @param ControllerHandle Handle of device to test @param RemainingDevicePath Optional parameter use to pick a specific child device to start. @@ -1305,8 +1305,6 @@ UnicodeToUtf8 ( @param ValidBytes The count of returned VT-VTF8 characters. If ValidBytes is zero, no valid VT-UTF8 returned. - @retval None. - **/ VOID GetOneValidUtf8Char ( diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Vtutf8.c b/MdeModulePkg/Universal/Console/TerminalDxe/Vtutf8.c index acdb8ca6f5..6b1ec577f8 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Vtutf8.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Vtutf8.c @@ -60,8 +60,6 @@ VTUTF8RawDataToUnicode ( @param ValidBytes The count of returned VT-VTF8 characters. If ValidBytes is zero, no valid VT-UTF8 returned. - @retval None. - **/ VOID GetOneValidUtf8Char ( diff --git a/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c b/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c index b91003f212..932c772d48 100644 --- a/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c +++ b/MdeModulePkg/Universal/DebugPortDxe/DebugPort.c @@ -114,7 +114,7 @@ GetDebugPortVariable ( // /** - Debug Port Driver entry pointo. + Debug Port Driver entry point. Reads DebugPort variable to determine what device and settings to use as the debug port. Binds exclusively to SerialIo. Reverts to defaults if no variable diff --git a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c index 04be432e9f..ed4d86038a 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c +++ b/MdeModulePkg/Universal/DebugSupportDxe/DebugSupport.c @@ -28,31 +28,26 @@ EFI_DEBUG_SUPPORT_PROTOCOL gDebugSupportProtocolInterface = { InvalidateInstructionCache }; -// -// Driver Entry Point -// + +/** + Debug Port Driver entry point. + + Checks to see there's not already a DebugSupport protocol installed for + the selected processor before installing protocol. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval EFI_ALREADY_STARTED DebugSupport protocol is installed already. + @retval other Some error occurs when executing this entry point. + +**/ EFI_STATUS InitializeDebugSupportDriver ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) -/*++ - -Routine Description: - Driver entry point. Checks to see there's not already a DebugSupport protocol - installed for the selected processor before installing protocol. - -Arguments: - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - -Returns: - - EFI_STATUS - ---*/ -// TODO: ImageHandle - add argument and description to function comment -// TODO: SystemTable - add argument and description to function comment { EFI_LOADED_IMAGE_PROTOCOL *LoadedImageProtocolPtr; EFI_STATUS Status; @@ -111,12 +106,12 @@ Returns: goto ErrExit; } - LoadedImageProtocolPtr->Unload = plUnloadDebugSupportDriver; + LoadedImageProtocolPtr->Unload = PlUnloadDebugSupportDriver; // // Call hook for platform specific initialization // - Status = plInitializeDebugSupportDriver (); + Status = PlInitializeDebugSupportDriver (); ASSERT (!EFI_ERROR (Status)); if (Status != EFI_SUCCESS) { goto ErrExit; diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.c b/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.c index 6c219d01e4..c650e6391f 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.c +++ b/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.c @@ -1,7 +1,7 @@ -/**@file +/** @file IA32 specific debug support functions -Copyright (c) 2006 - 2007, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -23,25 +23,24 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. IDT_ENTRY *IdtEntryTable = NULL; DESCRIPTOR NullDesc = 0; +/** + Allocate pool for a new IDT entry stub. + + Copy the generic stub into the new buffer and fixup the vector number + and jump target address. + + @param ExceptionType This is the exception type that the new stub will be created + for. + @param Stub On successful exit, *Stub contains the newly allocated entry stub. + + @retval EFI_SUCCESS Always. + +**/ EFI_STATUS CreateEntryStub ( IN EFI_EXCEPTION_TYPE ExceptionType, OUT VOID **Stub ) -/*++ - -Routine Description: Allocate pool for a new IDT entry stub. Copy the generic - stub into the new buffer and fixup the vector number and jump target address. - -Arguments: - ExceptionType - This is the exception type that the new stub will be created - for. - Stub - On successful exit, *Stub contains the newly allocated entry stub. -Returns: - Typically EFI_SUCCESS - other possibilities are passed through from AllocatePool - ---*/ { UINT8 *StubCopy; @@ -73,14 +72,7 @@ Returns: return EFI_SUCCESS; } -EFI_STATUS -HookEntry ( - IN EFI_EXCEPTION_TYPE ExceptionType, - IN VOID (*NewCallback) () - ) -/*++ - -Routine Description: +/** Creates a nes entry stub. Then saves the current IDT entry and replaces it with an interrupt gate for the new entry point. The IdtEntryTable is updated with the new registered function. @@ -88,15 +80,17 @@ Routine Description: This code executes in boot services context. The stub entry executes in interrupt context. -Arguments: - ExceptionType - specifies which vector to hook. - NewCallback - a pointer to the new function to be registered. + @param ExceptionType Specifies which vector to hook. + @param NewCallback A pointer to the new function to be registered. -Returns: - EFI_SUCCESS - Other possibilities are passed through by CreateEntryStub + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +HookEntry ( + IN EFI_EXCEPTION_TYPE ExceptionType, + IN VOID (*NewCallback) () + ) { BOOLEAN OldIntFlagState; EFI_STATUS Status; @@ -104,81 +98,72 @@ Returns: Status = CreateEntryStub (ExceptionType, (VOID **) &IdtEntryTable[ExceptionType].StubEntry); if (Status == EFI_SUCCESS) { OldIntFlagState = WriteInterruptFlag (0); - ReadIdt (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); + READ_IDT (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); ((UINT16 *) &IdtEntryTable[ExceptionType].OrigVector)[0] = ((UINT16 *) &IdtEntryTable[ExceptionType].OrigDesc)[0]; ((UINT16 *) &IdtEntryTable[ExceptionType].OrigVector)[1] = ((UINT16 *) &IdtEntryTable[ExceptionType].OrigDesc)[3]; Vect2Desc (&IdtEntryTable[ExceptionType].NewDesc, IdtEntryTable[ExceptionType].StubEntry); IdtEntryTable[ExceptionType].RegisteredCallback = NewCallback; - WriteIdt (ExceptionType, &(IdtEntryTable[ExceptionType].NewDesc)); + WRITE_IDT (ExceptionType, &(IdtEntryTable[ExceptionType].NewDesc)); WriteInterruptFlag (OldIntFlagState); } return Status; } -EFI_STATUS -UnhookEntry ( - IN EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ - -Routine Description: +/** Undoes HookEntry. This code executes in boot services context. -Arguments: - ExceptionType - specifies which entry to unhook + @param ExceptionType Specifies which entry to unhook -Returns: - EFI_SUCCESS + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +UnhookEntry ( + IN EFI_EXCEPTION_TYPE ExceptionType + ) { BOOLEAN OldIntFlagState; OldIntFlagState = WriteInterruptFlag (0); - WriteIdt (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); + WRITE_IDT (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); WriteInterruptFlag (OldIntFlagState); return EFI_SUCCESS; } -EFI_STATUS -ManageIdtEntryTable ( - VOID (*NewCallback)(), - EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ - -Routine Description: +/** This is the main worker function that manages the state of the interrupt handlers. It both installs and uninstalls interrupt handlers based on the value of NewCallback. If NewCallback is NULL, then uninstall is indicated. If NewCallback is non-NULL, then install is indicated. -Arguments: - NewCallback - If non-NULL, NewCallback specifies the new handler to register. - If NULL, specifies that the previously registered handler should - be uninstalled. - ExceptionType - Indicates which entry to manage - -Returns: - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. + @param NewCallback If non-NULL, NewCallback specifies the new handler to register. + If NULL, specifies that the previously registered handler should + be uninstalled. + @param ExceptionType Indicates which entry to manage. - Other possible return values are passed through from UnHookEntry and HookEntry. + @retval EFI_SUCCESS Process is ok. + @retval EFI_INVALID_PARAMETER Requested uninstalling a handler from a vector that has + no handler registered for it + @retval EFI_ALREADY_STARTED Requested install to a vector that already has a handler registered. + @retval others Possible return values are passed through from UnHookEntry and HookEntry. ---*/ +**/ +EFI_STATUS +ManageIdtEntryTable ( + VOID (*NewCallback)(), + EFI_EXCEPTION_TYPE ExceptionType + ) { EFI_STATUS Status; Status = EFI_SUCCESS; if (!FeaturePcdGet (PcdNtEmulatorEnable)) { - if (CompareDescriptor (&IdtEntryTable[ExceptionType].NewDesc, &NullDesc)) { + if (COMPARE_DESCRIPTOR (&IdtEntryTable[ExceptionType].NewDesc, &NullDesc)) { // // we've already installed to this vector // @@ -208,29 +193,38 @@ Returns: return Status; } +/** + This is a DebugSupport protocol member function, hard + coded to support only 1 processor for now. + + @param This The DebugSupport instance + @param MaxProcessorIndex The maximuim supported processor index + + @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0. + +**/ EFI_STATUS EFIAPI GetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. - -Arguments: - This - The DebugSupport instance - MaxProcessorIndex - The maximuim supported processor index - -Returns: - Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0 - ---*/ { *MaxProcessorIndex = 0; return (EFI_SUCCESS); } +/** + DebugSupport protocol member function. + + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param PeriodicCallback Callback function + + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. + +**/ EFI_STATUS EFIAPI RegisterPeriodicCallback ( @@ -238,29 +232,24 @@ RegisterPeriodicCallback ( IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - PeriodicCallback - Callback function +{ + return ManageIdtEntryTable (PeriodicCallback, SYSTEM_TIMER_VECTOR); +} -Returns: +/** + DebugSupport protocol member function. - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. + This code executes in boot services context. - Other possible return values are passed through from UnHookEntry and HookEntry. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param NewCallback Callback function + @param ExceptionType Which exception to hook ---*/ -{ - return ManageIdtEntryTable (PeriodicCallback, SYSTEM_TIMER_VECTOR); -} + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterExceptionCallback ( @@ -269,33 +258,21 @@ RegisterExceptionCallback ( IN EFI_EXCEPTION_CALLBACK NewCallback, IN EFI_EXCEPTION_TYPE ExceptionType ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - - This code executes in boot services context. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - NewCallback - Callback function - ExceptionType - Which exception to hook - -Returns: - - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. - - Other possible return values are passed through from UnHookEntry and HookEntry. - ---*/ { return ManageIdtEntryTable (NewCallback, ExceptionType); } +/** + DebugSupport protocol member function. Calls assembly routine to flush cache. + + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param Start Physical base of the memory range to be invalidated + @param Length mininum number of bytes in instruction cache to invalidate + + @retval EFI_SUCCESS Always returned. + +**/ EFI_STATUS EFIAPI InvalidateInstructionCache ( @@ -304,49 +281,27 @@ InvalidateInstructionCache ( IN VOID *Start, IN UINT64 Length ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - Calls assembly routine to flush cache. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - Start - Physical base of the memory range to be invalidated - Length - mininum number of bytes in instruction cache to invalidate - -Returns: - - EFI_SUCCESS - always return success - ---*/ { AsmWbinvd (); return EFI_SUCCESS; } +/** + Initializes driver's handler registration databas. + + This code executes in boot services context + Must be public because it's referenced from DebugSupport.c + + @retval EFI_UNSUPPORTED If IA32 processor does not support FXSTOR/FXRSTOR instructions, + the context save will fail, so these processor's are not supported. + @retval EFI_OUT_OF_RESOURCES Fails to allocate memory. + @retval EFI_SUCCESS Initializes successfully. + +**/ EFI_STATUS -plInitializeDebugSupportDriver ( +PlInitializeDebugSupportDriver ( VOID ) -/*++ - -Routine Description: - Initializes driver's handler registration database. - - This code executes in boot services context. - -Arguments: - None - -Returns: - EFI_SUCCESS - EFI_UNSUPPORTED - if IA32 processor does not support FXSTOR/FXRSTOR instructions, - the context save will fail, so these processor's are not supported. - EFI_OUT_OF_RESOURCES - not resource to finish initialization - ---*/ { EFI_EXCEPTION_TYPE ExceptionType; @@ -381,28 +336,21 @@ ErrorCleanup: return EFI_OUT_OF_RESOURCES; } -EFI_STATUS -EFIAPI -plUnloadDebugSupportDriver ( - IN EFI_HANDLE ImageHandle - ) -/*++ - -Routine Description: +/** This is the callback that is written to the LoadedImage protocol instance on the image handle. It uninstalls all registered handlers and frees all entry stub memory. - This code executes in boot services context. - -Arguments: - ImageHandle - The image handle of the unload handler - -Returns: + @param ImageHandle The firmware allocated handle for the EFI image. - EFI_SUCCESS - always return success + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +EFIAPI +PlUnloadDebugSupportDriver ( + IN EFI_HANDLE ImageHandle + ) { EFI_EXCEPTION_TYPE ExceptionType; @@ -414,26 +362,20 @@ Returns: return EFI_SUCCESS; } +/** + Common piece of code that invokes the registered handlers. + + This code executes in exception context so no efi calls are allowed. + + @param ExceptionType Exception type + @param ContextRecord System context + +**/ VOID InterruptDistrubutionHub ( EFI_EXCEPTION_TYPE ExceptionType, EFI_SYSTEM_CONTEXT_IA32 *ContextRecord ) -/*++ - -Routine Description: Common piece of code that invokes the registered handlers. - - This code executes in exception context so no efi calls are allowed. - -Arguments: - ExceptionType - exception type - ContextRecord - system context - -Returns: - - None - ---*/ { if (IdtEntryTable[ExceptionType].RegisteredCallback != NULL) { if (ExceptionType != SYSTEM_TIMER_VECTOR) { diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.h b/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.h index 0fa93de100..1566f3e8b7 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.h +++ b/MdeModulePkg/Universal/DebugSupportDxe/Ia32/PlDebugSupport.h @@ -1,7 +1,7 @@ -/**@file +/** @file IA32 specific debug support macros, typedefs and prototypes. -Copyright (c) 2006, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -12,8 +12,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ -#ifndef _PLDEBUG_SUPPORT_H -#define _PLDEBUG_SUPPORT_H +#ifndef _PLDEBUG_SUPPORT_H_ +#define _PLDEBUG_SUPPORT_H_ #include @@ -32,11 +32,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define NUM_IDT_ENTRIES 0x78 #define SYSTEM_TIMER_VECTOR 0x68 #define VECTOR_ENTRY_PAGES 1 -#define CopyDescriptor(Dest, Src) CopyMem ((Dest), (Src), sizeof (DESCRIPTOR)) -#define ZeroDescriptor(Dest) CopyDescriptor ((Dest), &NullDesc) -#define ReadIdt(Vector, Dest) CopyDescriptor ((Dest), &((GetIdtr ())[(Vector)])) -#define WriteIdt(Vector, Src) CopyDescriptor (&((GetIdtr ())[(Vector)]), (Src)) -#define CompareDescriptor(Desc1, Desc2) CompareMem ((Desc1), (Desc2), sizeof (DESCRIPTOR)) +#define COPY_DESCRIPTOR(Dest, Src) CopyMem ((Dest), (Src), sizeof (DESCRIPTOR)) +#define READ_IDT(Vector, Dest) COPY_DESCRIPTOR ((Dest), &((GetIdtr ())[(Vector)])) +#define WRITE_IDT(Vector, Src) COPY_DESCRIPTOR (&((GetIdtr ())[(Vector)]), (Src)) +#define COMPARE_DESCRIPTOR(Desc1, Desc2) CompareMem ((Desc1), (Desc2), sizeof (DESCRIPTOR)) #define EFI_ISA IsaIa32 #define FF_FXSR (1 << 24) @@ -61,214 +60,149 @@ extern UINT8 InterruptEntryStub[]; extern UINT32 StubSize; extern VOID (*OrigVector) (VOID); +/** + Generic IDT entry. + +**/ VOID CommonIdtEntry ( VOID - ) -/*++ - -Routine Description: - - Generic IDT entry - -Arguments: - - None - -Returns: - - None + ); ---*/ -; +/** + Check whether FXSTOR is supported + @retval TRUE FXSTOR is supported. + @retval FALSE FXSTOR is not supported. +**/ BOOLEAN FxStorSupport ( VOID - ) -/*++ - -Routine Description: - - Check whether FXSTOR is supported - -Arguments: - - None - -Returns: + ); - TRUE - supported - FALSE - not supported +/** + Return the physical address of IDTR. ---*/ -; + @return The physical address of IDTR. +**/ DESCRIPTOR * GetIdtr ( VOID - ) -/*++ - -Routine Description: - - Return the physical address of IDTR - -Arguments: - - None - -Returns: + ); - The physical address of IDTR +/** + Encodes an IDT descriptor with the given physical address. ---*/ -; + @param DestDesc The IDT descriptor address. + @param Vecotr The interrupt vector entry. +**/ VOID Vect2Desc ( DESCRIPTOR * DestDesc, VOID (*Vector) (VOID) - ) -/*++ - -Routine Description: - - Encodes an IDT descriptor with the given physical address - -Arguments: - - DestDesc - The IDT descriptor address - Vector - The interrupt vector entry + ); -Returns: +/** + Programs interrupt flag to the requested state and returns previous + state. - None + @param NewState New interrupt status. ---*/ -; + @retval TRUE Old interrupt status is TRUE. + @retval FALSE Old interrupt status is FALSE +**/ BOOLEAN WriteInterruptFlag ( BOOLEAN NewState - ) -/*++ - -Routine Description: - - Programs interrupt flag to the requested state and returns previous - state. - -Arguments: - - NewState - New interrupt status - -Returns: + ); - Old interrupt status +/** + Initializes driver's handler registration databas. + + This code executes in boot services context + Must be public because it's referenced from DebugSupport.c ---*/ -; + @retval EFI_UNSUPPORTED If IA32 processor does not support FXSTOR/FXRSTOR instructions, + the context save will fail, so these processor's are not supported. + @retval EFI_OUT_OF_RESOURCES Fails to allocate memory. + @retval EFI_SUCCESS Initializes successfully. +**/ EFI_STATUS -plInitializeDebugSupportDriver ( +PlInitializeDebugSupportDriver ( VOID - ) -/*++ - -Routine Description: - Initializes driver's handler registration database. - - This code executes in boot services context. + ); -Arguments: - None +/** + This is the callback that is written to the LoadedImage protocol instance + on the image handle. It uninstalls all registered handlers and frees all entry + stub memory. -Returns: - EFI_SUCCESS - EFI_UNSUPPORTED - if IA32 processor does not support FXSTOR/FXRSTOR instructions, - the context save will fail, so these processor's are not supported. - EFI_OUT_OF_RESOURCES - not resource to finish initialization + @param ImageHandle The firmware allocated handle for the EFI image. ---*/ -; + @retval EFI_SUCCESS Always. +**/ EFI_STATUS EFIAPI -plUnloadDebugSupportDriver ( +PlUnloadDebugSupportDriver ( IN EFI_HANDLE ImageHandle - ) -/*++ - -Routine Description: - This is the callback that is written to the LoadedImage protocol instance - on the image handle. It uninstalls all registered handlers and frees all entry - stub memory. - - This code executes in boot services context. - -Arguments: - ImageHandle - The image handle of the unload handler + ); -Returns: +/** + This is a DebugSupport protocol member function, hard + coded to support only 1 processor for now. - EFI_SUCCESS - always return success + @param This The DebugSupport instance + @param MaxProcessorIndex The maximuim supported processor index ---*/ -; + @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0. -// -// DebugSupport protocol member functions -// +**/ EFI_STATUS EFIAPI GetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex - ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. + ); -Arguments: - This - The DebugSupport instance - MaxProcessorIndex - The maximuim supported processor index +/** + DebugSupport protocol member function. -Returns: - Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0 + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param PeriodicCallback Callback function ---*/ -; + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterPeriodicCallback ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback - ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - PeriodicCallback - Callback function + ); -Returns: +/** + DebugSupport protocol member function. - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. + This code executes in boot services context. - Other possible return values are passed through from UnHookEntry and HookEntry. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param NewCallback Callback function + @param ExceptionType Which exception to hook ---*/ -; + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterExceptionCallback ( @@ -276,32 +210,19 @@ RegisterExceptionCallback ( IN UINTN ProcessorIndex, IN EFI_EXCEPTION_CALLBACK NewCallback, IN EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - - This code executes in boot services context. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - NewCallback - Callback function - ExceptionType - Which exception to hook - -Returns: + ); - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. +/** + DebugSupport protocol member function. Calls assembly routine to flush cache. - Other possible return values are passed through from UnHookEntry and HookEntry. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param Start Physical base of the memory range to be invalidated + @param Length mininum number of bytes in instruction cache to invalidate ---*/ -; + @retval EFI_SUCCESS Always returned. +**/ EFI_STATUS EFIAPI InvalidateInstructionCache ( @@ -309,24 +230,6 @@ InvalidateInstructionCache ( IN UINTN ProcessorIndex, IN VOID *Start, IN UINT64 Length - ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - Calls assembly routine to flush cache. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - Start - Physical base of the memory range to be invalidated - Length - mininum number of bytes in instruction cache to invalidate - -Returns: - - EFI_SUCCESS - always return success - ---*/ -; + ); #endif diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c index d47959f00d..5402e04041 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c +++ b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.c @@ -1,4 +1,4 @@ -/**@file +/** @file IPF specific debug support functions Copyright (c) 2006 - 2008, Intel Corporation @@ -35,35 +35,82 @@ typedef struct { VOID (*RegisteredCallback) (); } IVT_ENTRY; +/** + This is the worker function that uninstalls and removes all handlers. + + @param ExceptionType Exception Type + @param NewBundles New Boundles + @param NewCallback New Callback + + @retval EFI_ALEADY_STARTED Ivt already hooked. + @retval others Indicates the request was not satisfied. + @retval EFI_SUCCESS Successfully uninstalled. + +**/ EFI_STATUS ManageIvtEntryTable ( - IN EFI_EXCEPTION_TYPE ExceptionType, + IN EFI_EXCEPTION_TYPE ExceptionType, IN BUNDLE NewBundles[4], IN VOID (*NewCallback) () ); +/** + Saves original IVT contents and inserts a few new bundles which are fixed up + to store the ExceptionType and then call the common handler. + + @param ExceptionType Exception Type + @param NewBundles New Boundles + @param NewCallback New Callback + +**/ VOID HookEntry ( - IN EFI_EXCEPTION_TYPE ExceptionType, + IN EFI_EXCEPTION_TYPE ExceptionType, IN BUNDLE NewBundles[4], IN VOID (*NewCallback) () ); +/** + Restores original IVT contents when unregistering a callback function. + + @param ExceptionType Exception Type + +**/ VOID UnhookEntry ( IN EFI_EXCEPTION_TYPE ExceptionType ); +/** + Sets up cache flush and calls assembly function to chain external interrupt. + + Records new callback in IvtEntryTable. + + @param NewCallback New Callback. + +**/ VOID ChainExternalInterrupt ( IN VOID (*NewCallback) () ); +/** + Sets up cache flush and calls assembly function to restore external interrupt. + Removes registered callback from IvtEntryTable. + +**/ VOID UnchainExternalInterrupt ( VOID ); +/** + Given an integer number, return the physical address of the entry point in the IFT. + + @param HandlerIndex Index of the Handler + @param EntryPoint IFT Entrypoint + +**/ VOID GetHandlerEntryPoint ( UINTN HandlerIndex, @@ -85,48 +132,38 @@ UINT8 IpfContextBuf[sizeof (EFI_SYSTEM_CONTEXT_IPF) + 512]; UINT8 PatchSaveBuffer[0x400]; UINTN ExternalInterruptCount; -EFI_STATUS -plInitializeDebugSupportDriver ( - VOID - ) -/*++ - -Routine Description: - IPF specific DebugSupport driver initialization. Must be public because it's - referenced from DebugSupport.c +/** + IPF specific DebugSupport driver initialization. -Arguments: + Must be public because it's referenced from DebugSupport.c -Returns: + @retval EFI_SUCCESS Always. - EFI_SUCCESS - ---*/ +**/ +EFI_STATUS +PlInitializeDebugSupportDriver ( + VOID + ) { SetMem (IvtEntryTable, sizeof (IvtEntryTable), 0); ExternalInterruptCount = 0; return EFI_SUCCESS; } -EFI_STATUS -EFIAPI -plUnloadDebugSupportDriver ( - IN EFI_HANDLE ImageHandle - ) -/*++ - -Routine Description: +/** Unload handler that is called during UnloadImage() - deallocates pool memory used by the driver. Must be public because it's referenced from DebugSuport.c -Arguments: - ImageHandle - Image handle - -Returns: + @param ImageHandle The firmware allocated handle for the EFI image. - EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +EFIAPI +PlUnloadDebugSupportDriver ( + IN EFI_HANDLE ImageHandle + ) { EFI_EXCEPTION_TYPE ExceptionType; @@ -137,26 +174,18 @@ Returns: return EFI_SUCCESS; } +/** + C routine that is called for all registered exceptions. This is the main + exception dispatcher. Must be public because it's referenced from AsmFuncs.s. + + @param ExceptionType Exception Type + @param Context System Context +**/ VOID CommonHandler ( IN EFI_EXCEPTION_TYPE ExceptionType, IN EFI_SYSTEM_CONTEXT Context ) -/*++ - -Routine Description: - C routine that is called for all registered exceptions. This is the main - exception dispatcher. Must be public because it's referenced from AsmFuncs.s. - -Arguments: - ExceptionType - Exception Type - Context - System Context - -Returns: - - Nothing - ---*/ { DEBUG_CODE_BEGIN (); if (mInHandler) { @@ -189,25 +218,18 @@ Returns: mInHandler = FALSE; } +/** + Given an integer number, return the physical address of the entry point in the IFT. + + @param HandlerIndex Index of the Handler + @param EntryPoint IFT Entrypoint + +**/ VOID GetHandlerEntryPoint ( UINTN HandlerIndex, VOID **EntryPoint ) -/*++ - -Routine Description: - Given an integer number, return the physical address of the entry point in the IFT - -Arguments: - HandlerIndex - Index of the Handler - EntryPoint - IFT Entrypoint - -Returns: - - Nothing - ---*/ { UINT8 *TempPtr; @@ -231,29 +253,24 @@ Returns: *EntryPoint = (VOID *) TempPtr; } +/** + This is the worker function that uninstalls and removes all handlers. + + @param ExceptionType Exception Type + @param NewBundles New Boundles + @param NewCallback New Callback + + @retval EFI_ALEADY_STARTED Ivt already hooked. + @retval others Indicates the request was not satisfied. + @retval EFI_SUCCESS Successfully uninstalled. + +**/ EFI_STATUS ManageIvtEntryTable ( - IN EFI_EXCEPTION_TYPE ExceptionType, + IN EFI_EXCEPTION_TYPE ExceptionType, IN BUNDLE NewBundles[NUM_BUNDLES_IN_STUB], IN VOID (*NewCallback) () ) -/*++ - -Routine Description: - This is the worker function that installs and removes all handlers - -Arguments: - ExceptionType - Exception Type - NewBundles - New Boundles - NewCallback - New Callback - -Returns: - - EFI_STATUS - any return other than EFI_SUCCESS indicates the request was not - satisfied. - EFI_ALEADY_STARTED - Ivt already hooked. - ---*/ { BUNDLE *B0Ptr; UINT64 InterruptFlags; @@ -313,28 +330,21 @@ Returns: return EFI_SUCCESS; } +/** + Saves original IVT contents and inserts a few new bundles which are fixed up + to store the ExceptionType and then call the common handler. + + @param ExceptionType Exception Type + @param NewBundles New Boundles + @param NewCallback New Callback + +**/ VOID HookEntry ( IN EFI_EXCEPTION_TYPE ExceptionType, IN BUNDLE NewBundles[4], IN VOID (*NewCallback) () ) -/*++ - -Routine Description: - Saves original IVT contents and inserts a few new bundles which are fixed up - to store the ExceptionType and then call the common handler. - -Arguments: - ExceptionType - Exception Type - NewBundles - New Boundles - NewCallback - New Callback - -Returns: - - Nothing - ---*/ { BUNDLE *FixupBundle; BUNDLE *B0Ptr; @@ -367,25 +377,16 @@ Returns: IvtEntryTable[ExceptionType].RegisteredCallback = NewCallback; } +/** + Restores original IVT contents when unregistering a callback function. + + @param ExceptionType Exception Type + +**/ VOID UnhookEntry ( IN EFI_EXCEPTION_TYPE ExceptionType ) -/*++ - -Routine Description: - Restores original IVT contents when unregistering a callback function - -Arguments: - ExceptionType - Exception Type - NewBundles - New Boundles - NewCallback - New Callback - -Returns: - - Nothing - ---*/ { BUNDLE *B0Ptr; @@ -404,24 +405,18 @@ Returns: InstructionCacheFlush (B0Ptr, 5); } -VOID -ChainExternalInterrupt ( - IN VOID (*NewCallback) () - ) -/*++ - -Routine Description: +/** Sets up cache flush and calls assembly function to chain external interrupt. + Records new callback in IvtEntryTable. - -Arguments: - NewCallback - New Callback -Returns: + @param NewCallback New Callback - Nothing - ---*/ +**/ +VOID +ChainExternalInterrupt ( + IN VOID (*NewCallback) () + ) { VOID *Start; @@ -431,24 +426,15 @@ Returns: InstructionCacheFlush (Start, 0x400); } +/** + Sets up cache flush and calls assembly function to restore external interrupt. + Removes registered callback from IvtEntryTable. + +**/ VOID UnchainExternalInterrupt ( VOID ) -/*++ - -Routine Description: - Sets up cache flush and calls assembly function to restore external interrupt. - Removes registered callback from IvtEntryTable. - -Arguments: - Nothing - -Returns: - - Nothing - ---*/ { VOID *Start; @@ -463,56 +449,61 @@ Returns: // DebugSupport protocol // +/** + This is a DebugSupport protocol member function, hard + coded to support only 1 processor for now. + + @param This The DebugSupport instance + @param MaxProcessorIndex The maximuim supported processor index + + @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0. + +**/ EFI_STATUS EFIAPI GetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. Hard - coded to support only 1 processor for now. - -Arguments: - This - The DebugSupport instance - MaxProcessorIndex - The maximuim supported processor index - -Returns: - Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0 - ---*/ { *MaxProcessorIndex = 0; return (EFI_SUCCESS); } +/** + DebugSupport protocol member function. + + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param PeriodicCallback Callback function + + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. + +**/ EFI_STATUS EFIAPI RegisterPeriodicCallback ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, - IN EFI_PERIODIC_CALLBACK NewPeriodicCallback + IN EFI_PERIODIC_CALLBACK PeriodicCallback ) -/*++ - -Routine Description: - DebugSupport protocol member function - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - PeriodicCallback - Callback function +{ + return ManageIvtEntryTable (EXCEPT_IPF_EXTERNAL_INTERRUPT, NULL, PeriodicCallback); +} -Returns: +/** + DebugSupport protocol member function. - EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param NewCallback Callback function + @param ExceptionType Which exception to hook ---*/ -{ - return ManageIvtEntryTable (EXCEPT_IPF_EXTERNAL_INTERRUPT, NULL, NewPeriodicCallback); -} + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterExceptionCallback ( @@ -521,22 +512,6 @@ RegisterExceptionCallback ( IN EFI_EXCEPTION_CALLBACK NewCallback, IN EFI_EXCEPTION_TYPE ExceptionType ) -/*++ - -Routine Description: - DebugSupport protocol member function - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - NewCallback - Callback function - ExceptionType - Which exception to hook - -Returns: - - EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. - ---*/ { return ManageIvtEntryTable ( ExceptionType, @@ -545,6 +520,17 @@ Returns: ); } +/** + DebugSupport protocol member function. Calls assembly routine to flush cache. + + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param Start Physical base of the memory range to be invalidated + @param Length mininum number of bytes in instruction cache to invalidate + + @retval EFI_SUCCESS Always returned. + +**/ EFI_STATUS EFIAPI InvalidateInstructionCache ( @@ -553,22 +539,7 @@ InvalidateInstructionCache ( IN VOID *Start, IN UINTN Length ) -/*++ - -Routine Description: - DebugSupport protocol member function. Calls assembly routine to flush cache. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - Start - Physical base of the memory range to be invalidated - Length - mininum number of bytes in instruction cache to invalidate - -Returns: - EFI_SUCCESS - ---*/ { InstructionCacheFlush (Start, Length); - return (EFI_SUCCESS); + return EFI_SUCCESS; } diff --git a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h index 4d993bcaef..cd5bb8e038 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h +++ b/MdeModulePkg/Universal/DebugSupportDxe/Ipf/PlDebugSupport.h @@ -1,4 +1,4 @@ -/**@file +/** @file IPF specific debugsupport types, macros, and definitions. Copyright (c) 2004 - 2006 Intel Corporation @@ -12,8 +12,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ -#ifndef _PLDEBUG_SUPPORT_H -#define _PLDEBUG_SUPPORT_H +#ifndef _PLDEBUG_SUPPORT_H_ +#define _PLDEBUG_SUPPORT_H_ #include @@ -36,252 +36,167 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. // #define EFI_ISA IsaIpf -// -// processor specific functions that must be public -// -EFI_STATUS -plInitializeDebugSupportDriver ( - VOID - ) -/*++ - -Routine Description: - IPF specific DebugSupport driver initialization. Must be public because it's - referenced from DebugSupport.c - -Arguments: +/** + IPF specific DebugSupport driver initialization. -Returns: + Must be public because it's referenced from DebugSupport.c - EFI_SUCCESS - ---*/ -; + @retval EFI_SUCCESS Always. +**/ EFI_STATUS -EFIAPI -plUnloadDebugSupportDriver ( - IN EFI_HANDLE ImageHandle - ) -/*++ +PlInitializeDebugSupportDriver ( + VOID + ); -Routine Description: +/** Unload handler that is called during UnloadImage() - deallocates pool memory used by the driver. Must be public because it's referenced from DebugSuport.c -Arguments: - ImageHandle - Image handle + @param ImageHandle The firmware allocated handle for the EFI image. -Returns: + @retval EFI_SUCCESS Always. - EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. +**/ +EFI_STATUS +EFIAPI +PlUnloadDebugSupportDriver ( + IN EFI_HANDLE ImageHandle + ); ---*/ -; +/** + C callable function to obtain the current value of IVA. -// -// Assembly worker functions and data referenced from PlDebugSupport.c -// + @return Current value of IVA. + +**/ VOID * GetIva ( VOID - ) -/*++ - -Routine Description: - - C callable function to obtain the current value of IVA - -Arguments: + ); - None - -Returns: - - Current value if IVA - ---*/ -; +/** + HookStub will be copied from it's loaded location into the IVT when + an IVT entry is hooked. +**/ VOID HookStub ( VOID - ) -/*++ - -Routine Description: - - HookStub will be copied from it's loaded location into the IVT when - an IVT entry is hooked. - -Arguments: + ); - None - -Returns: - - None - ---*/ -; +/** + Chains an interrupt handler. +**/ VOID ChainHandler ( VOID - ) -/*++ - -Routine Description: - - Chains an interrupt handler - -Arguments: - - None - -Returns: - - None + ); ---*/ -; +/** + Unchains an interrupt handler. +**/ VOID UnchainHandler ( VOID - ) -/*++ - -Routine Description: - - Unchains an interrupt handler + ); -Arguments: +/** + C callable function to enable/disable interrupts. - None + @param NewInterruptState New Interrupt State. -Returns: - - None - ---*/ -; + @return Previous state of psr.ic. +**/ UINT64 ProgramInterruptFlags ( IN UINT64 NewInterruptState - ) -/*++ - -Routine Description: - - C callable function to enable/disable interrupts - -Arguments: - - NewInterruptState - New Interrupt State - -Returns: + ); - Previous state of psr.ic +/** + Flushes instruction cache for specified number of bytes. ---*/ -; + @param StartAddress Cache Start Address. + @param SizeInBytes Cache Size. +**/ VOID InstructionCacheFlush ( IN VOID *StartAddress, IN UINTN SizeInBytes - ) -/*++ - -Routine Description: - - Flushes instruction cache for specified number of bytes - -Arguments: - - StartAddress - Cache Start Address - SizeInBytes - Cache Size + ); -Returns: +/** + This is a DebugSupport protocol member function, hard + coded to support only 1 processor for now. - None + @param This The DebugSupport instance + @param MaxProcessorIndex The maximuim supported processor index ---*/ -; + @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0. +**/ EFI_STATUS EFIAPI GetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex - ) -/*++ + ); -Routine Description: This is a DebugSupport protocol member function. Hard - coded to support only 1 processor for now. +/** + DebugSupport protocol member function. -Arguments: - This - The DebugSupport instance - MaxProcessorIndex - The maximuim supported processor index + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param PeriodicCallback Callback function -Returns: - Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0 - ---*/ -; + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterPeriodicCallback ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback - ) -/*++ + ); -Routine Description: - DebugSupport protocol member function +/** + DebugSupport protocol member function. -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - PeriodicCallback - Callback function + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param NewCallback Callback function + @param ExceptionType Which exception to hook -Returns: - - EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. - ---*/ -; + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterExceptionCallback ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, - IN EFI_EXCEPTION_CALLBACK NewHandler, + IN EFI_EXCEPTION_CALLBACK NewCallback, IN EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ + ); -Routine Description: - DebugSupport protocol member function - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - NewCallback - Callback function - ExceptionType - Which exception to hook - -Returns: +/** + DebugSupport protocol member function. Calls assembly routine to flush cache. - EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param Start Physical base of the memory range to be invalidated + @param Length mininum number of bytes in instruction cache to invalidate ---*/ -; + @retval EFI_SUCCESS Always returned. +**/ EFI_STATUS EFIAPI InvalidateInstructionCache ( @@ -289,44 +204,19 @@ InvalidateInstructionCache ( IN UINTN ProcessorIndex, IN VOID *Start, IN UINTN Length - ) -/*++ - -Routine Description: - DebugSupport protocol member function. Calls assembly routine to flush cache. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - Start - Physical base of the memory range to be invalidated - Length - mininum number of bytes in instruction cache to invalidate - -Returns: - EFI_SUCCESS + ); ---*/ -; +/** + C routine that is called for all registered exceptions. This is the main + exception dispatcher. Must be public because it's referenced from AsmFuncs.s. + @param ExceptionType Exception Type + @param Context System Context +**/ VOID CommonHandler ( IN EFI_EXCEPTION_TYPE ExceptionType, IN EFI_SYSTEM_CONTEXT Context - ) -/*++ - -Routine Description: - C routine that is called for all registered exceptions. This is the main - exception dispatcher. Must be public because it's referenced from AsmFuncs.s. - -Arguments: - ExceptionType - Exception Type - Context - System Context - -Returns: - - Nothing - ---*/ -; + ); #endif diff --git a/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.c b/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.c index f6af90f21b..24e5acc74a 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.c +++ b/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.c @@ -1,4 +1,4 @@ -/**@file +/** @file X64 specific debug support functions Copyright (c) 2006 - 2007, Intel Corporation @@ -23,25 +23,24 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. IDT_ENTRY *IdtEntryTable = NULL; DESCRIPTOR NullDesc = {0, 0}; +/** + Allocate pool for a new IDT entry stub. + + Copy the generic stub into the new buffer and fixup the vector number + and jump target address. + + @param ExceptionType This is the exception type that the new stub will be created + for. + @param Stub On successful exit, *Stub contains the newly allocated entry stub. + + @retval EFI_SUCCESS Always. + +**/ EFI_STATUS CreateEntryStub ( IN EFI_EXCEPTION_TYPE ExceptionType, OUT VOID **Stub ) -/*++ - -Routine Description: Allocate pool for a new IDT entry stub. Copy the generic - stub into the new buffer and fixup the vector number and jump target address. - -Arguments: - ExceptionType - This is the exception type that the new stub will be created - for. - Stub - On successful exit, *Stub contains the newly allocated entry stub. -Returns: - Typically EFI_SUCCESS - other possibilities are passed through from AllocatePool - ---*/ { UINT8 *StubCopy; @@ -71,14 +70,7 @@ Returns: return EFI_SUCCESS; } -EFI_STATUS -HookEntry ( - IN EFI_EXCEPTION_TYPE ExceptionType, - IN VOID (*NewCallback) () - ) -/*++ - -Routine Description: +/** Creates a nes entry stub. Then saves the current IDT entry and replaces it with an interrupt gate for the new entry point. The IdtEntryTable is updated with the new registered function. @@ -86,15 +78,17 @@ Routine Description: This code executes in boot services context. The stub entry executes in interrupt context. -Arguments: - ExceptionType - specifies which vector to hook. - NewCallback - a pointer to the new function to be registered. + @param ExceptionType Specifies which vector to hook. + @param NewCallback A pointer to the new function to be registered. -Returns: - EFI_SUCCESS - Other possibilities are passed through by CreateEntryStub + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +HookEntry ( + IN EFI_EXCEPTION_TYPE ExceptionType, + IN VOID (*NewCallback) () + ) { BOOLEAN OldIntFlagState; EFI_STATUS Status; @@ -102,7 +96,7 @@ Returns: Status = CreateEntryStub (ExceptionType, (VOID **) &IdtEntryTable[ExceptionType].StubEntry); if (Status == EFI_SUCCESS) { OldIntFlagState = WriteInterruptFlag (0); - ReadIdt (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); + READ_IDT (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); ((UINT16 *) &IdtEntryTable[ExceptionType].OrigVector)[0] = ((UINT16 *) &IdtEntryTable[ExceptionType].OrigDesc.Low)[0]; ((UINT16 *) &IdtEntryTable[ExceptionType].OrigVector)[1] = ((UINT16 *) &IdtEntryTable[ExceptionType].OrigDesc.Low)[3]; @@ -110,73 +104,64 @@ Returns: Vect2Desc (&IdtEntryTable[ExceptionType].NewDesc, IdtEntryTable[ExceptionType].StubEntry); IdtEntryTable[ExceptionType].RegisteredCallback = NewCallback; - WriteIdt (ExceptionType, &(IdtEntryTable[ExceptionType].NewDesc)); + WRITE_IDT (ExceptionType, &(IdtEntryTable[ExceptionType].NewDesc)); WriteInterruptFlag (OldIntFlagState); } return Status; } -EFI_STATUS -UnhookEntry ( - IN EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ - -Routine Description: +/** Undoes HookEntry. This code executes in boot services context. -Arguments: - ExceptionType - specifies which entry to unhook + @param ExceptionType Specifies which entry to unhook -Returns: - EFI_SUCCESS + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +UnhookEntry ( + IN EFI_EXCEPTION_TYPE ExceptionType + ) { BOOLEAN OldIntFlagState; OldIntFlagState = WriteInterruptFlag (0); - WriteIdt (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); + WRITE_IDT (ExceptionType, &(IdtEntryTable[ExceptionType].OrigDesc)); WriteInterruptFlag (OldIntFlagState); return EFI_SUCCESS; } -EFI_STATUS -ManageIdtEntryTable ( - VOID (*NewCallback)(), - EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ - -Routine Description: +/** This is the main worker function that manages the state of the interrupt handlers. It both installs and uninstalls interrupt handlers based on the value of NewCallback. If NewCallback is NULL, then uninstall is indicated. If NewCallback is non-NULL, then install is indicated. -Arguments: - NewCallback - If non-NULL, NewCallback specifies the new handler to register. - If NULL, specifies that the previously registered handler should - be uninstalled. - ExceptionType - Indicates which entry to manage - -Returns: - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. + @param NewCallback If non-NULL, NewCallback specifies the new handler to register. + If NULL, specifies that the previously registered handler should + be uninstalled. + @param ExceptionType Indicates which entry to manage. - Other possible return values are passed through from UnHookEntry and HookEntry. + @retval EFI_SUCCESS Process is ok. + @retval EFI_INVALID_PARAMETER Requested uninstalling a handler from a vector that has + no handler registered for it + @retval EFI_ALREADY_STARTED Requested install to a vector that already has a handler registered. + @retval others Possible return values are passed through from UnHookEntry and HookEntry. ---*/ +**/ +EFI_STATUS +ManageIdtEntryTable ( + VOID (*NewCallback)(), + EFI_EXCEPTION_TYPE ExceptionType + ) { EFI_STATUS Status; Status = EFI_SUCCESS; - if (CompareDescriptor (&IdtEntryTable[ExceptionType].NewDesc, &NullDesc)) { + if (COMPARE_DESCRIPTOR (&IdtEntryTable[ExceptionType].NewDesc, &NullDesc)) { // // we've already installed to this vector // @@ -205,29 +190,38 @@ Returns: return Status; } +/** + This is a DebugSupport protocol member function, hard + coded to support only 1 processor for now. + + @param This The DebugSupport instance + @param MaxProcessorIndex The maximuim supported processor index + + @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0. + +**/ EFI_STATUS EFIAPI GetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. - -Arguments: - This - The DebugSupport instance - MaxProcessorIndex - The maximuim supported processor index - -Returns: - Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0 - ---*/ { *MaxProcessorIndex = 0; return (EFI_SUCCESS); } +/** + DebugSupport protocol member function. + + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param PeriodicCallback Callback function + + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. + +**/ EFI_STATUS EFIAPI RegisterPeriodicCallback ( @@ -235,29 +229,24 @@ RegisterPeriodicCallback ( IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - PeriodicCallback - Callback function +{ + return ManageIdtEntryTable (PeriodicCallback, SYSTEM_TIMER_VECTOR); +} -Returns: +/** + DebugSupport protocol member function. - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. + This code executes in boot services context. - Other possible return values are passed through from UnHookEntry and HookEntry. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param NewCallback Callback function + @param ExceptionType Which exception to hook ---*/ -{ - return ManageIdtEntryTable (PeriodicCallback, SYSTEM_TIMER_VECTOR); -} + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterExceptionCallback ( @@ -266,33 +255,21 @@ RegisterExceptionCallback ( IN EFI_EXCEPTION_CALLBACK NewCallback, IN EFI_EXCEPTION_TYPE ExceptionType ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - - This code executes in boot services context. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - NewCallback - Callback function - ExceptionType - Which exception to hook - -Returns: - - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. - - Other possible return values are passed through from UnHookEntry and HookEntry. - ---*/ { return ManageIdtEntryTable (NewCallback, ExceptionType); } +/** + DebugSupport protocol member function. Calls assembly routine to flush cache. + + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param Start Physical base of the memory range to be invalidated + @param Length mininum number of bytes in instruction cache to invalidate + + @retval EFI_SUCCESS Always returned. + +**/ EFI_STATUS EFIAPI InvalidateInstructionCache ( @@ -301,49 +278,27 @@ InvalidateInstructionCache ( IN VOID *Start, IN UINT64 Length ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - Calls assembly routine to flush cache. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - Start - Physical base of the memory range to be invalidated - Length - mininum number of bytes in instruction cache to invalidate - -Returns: - - EFI_SUCCESS - always return success - ---*/ { AsmWbinvd (); return EFI_SUCCESS; } +/** + Initializes driver's handler registration databas. + + This code executes in boot services context + Must be public because it's referenced from DebugSupport.c + + @retval EFI_UNSUPPORTED If x64 processor does not support FXSTOR/FXRSTOR instructions, + the context save will fail, so these processor's are not supported. + @retval EFI_OUT_OF_RESOURCES Fails to allocate memory. + @retval EFI_SUCCESS Initializes successfully. + +**/ EFI_STATUS -plInitializeDebugSupportDriver ( +PlInitializeDebugSupportDriver ( VOID ) -/*++ - -Routine Description: - Initializes driver's handler registration database. - - This code executes in boot services context. - -Arguments: - None - -Returns: - EFI_SUCCESS - EFI_UNSUPPORTED - if X64 processor does not support FXSTOR/FXRSTOR instructions, - the context save will fail, so these processor's are not supported. - EFI_OUT_OF_RESOURCES - not resource to finish initialization - ---*/ { EFI_EXCEPTION_TYPE ExceptionType; @@ -378,28 +333,21 @@ ErrorCleanup: return EFI_OUT_OF_RESOURCES; } -EFI_STATUS -EFIAPI -plUnloadDebugSupportDriver ( - IN EFI_HANDLE ImageHandle - ) -/*++ - -Routine Description: +/** This is the callback that is written to the LoadedImage protocol instance on the image handle. It uninstalls all registered handlers and frees all entry stub memory. - This code executes in boot services context. - -Arguments: - ImageHandle - The image handle of the unload handler - -Returns: + @param ImageHandle The firmware allocated handle for the EFI image. - EFI_SUCCESS - always return success + @retval EFI_SUCCESS Always. ---*/ +**/ +EFI_STATUS +EFIAPI +PlUnloadDebugSupportDriver ( + IN EFI_HANDLE ImageHandle + ) { EFI_EXCEPTION_TYPE ExceptionType; @@ -411,26 +359,20 @@ Returns: return EFI_SUCCESS; } +/** + Common piece of code that invokes the registered handlers. + + This code executes in exception context so no efi calls are allowed. + + @param ExceptionType Exception type + @param ContextRecord System context + +**/ VOID InterruptDistrubutionHub ( EFI_EXCEPTION_TYPE ExceptionType, EFI_SYSTEM_CONTEXT_IA32 *ContextRecord ) -/*++ - -Routine Description: Common piece of code that invokes the registered handlers. - - This code executes in exception context so no efi calls are allowed. - -Arguments: - ExceptionType - exception type - ContextRecord - system context - -Returns: - - None - ---*/ { if (IdtEntryTable[ExceptionType].RegisteredCallback != NULL) { if (ExceptionType != SYSTEM_TIMER_VECTOR) { diff --git a/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.h b/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.h index b643ec44e2..eb04f1a88c 100644 --- a/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.h +++ b/MdeModulePkg/Universal/DebugSupportDxe/X64/PlDebugSupport.h @@ -1,7 +1,7 @@ -/**@file +/** @file X64 specific debug support macros, typedefs and prototypes. -Copyright (c) 2006, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -12,8 +12,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ -#ifndef _PLDEBUG_SUPPORT_H -#define _PLDEBUG_SUPPORT_H +#ifndef _PLDEBUG_SUPPORT_H_ +#define _PLDEBUG_SUPPORT_H_ #include @@ -32,11 +32,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define NUM_IDT_ENTRIES 0x78 #define SYSTEM_TIMER_VECTOR 0x68 #define VECTOR_ENTRY_PAGES 1 -#define CopyDescriptor(Dest, Src) CopyMem ((Dest), (Src), sizeof (DESCRIPTOR)) -#define ZeroDescriptor(Dest) CopyDescriptor ((Dest), &NullDesc) -#define ReadIdt(Vector, Dest) CopyDescriptor ((Dest), &((GetIdtr ())[(Vector)])) -#define WriteIdt(Vector, Src) CopyDescriptor (&((GetIdtr ())[(Vector)]), (Src)) -#define CompareDescriptor(Desc1, Desc2) CompareMem ((Desc1), (Desc2), sizeof (DESCRIPTOR)) +#define COPY_DESCRIPTOR(Dest, Src) CopyMem ((Dest), (Src), sizeof (DESCRIPTOR)) +#define READ_IDT(Vector, Dest) COPY_DESCRIPTOR ((Dest), &((GetIdtr ())[(Vector)])) +#define WRITE_IDT(Vector, Src) COPY_DESCRIPTOR (&((GetIdtr ())[(Vector)]), (Src)) +#define COMPARE_DESCRIPTOR(Desc1, Desc2) CompareMem ((Desc1), (Desc2), sizeof (DESCRIPTOR)) #define EFI_ISA IsaX64 #define FF_FXSR (1 << 24) @@ -64,214 +63,149 @@ extern UINT8 InterruptEntryStub[]; extern UINT32 StubSize; extern VOID (*OrigVector) (VOID); +/** + Generic IDT entry. + +**/ VOID CommonIdtEntry ( VOID - ) -/*++ - -Routine Description: - - Generic IDT entry - -Arguments: - - None - -Returns: - - None + ); ---*/ -; +/** + Check whether FXSTOR is supported + @retval TRUE FXSTOR is supported. + @retval FALSE FXSTOR is not supported. +**/ BOOLEAN FxStorSupport ( VOID - ) -/*++ - -Routine Description: - - Check whether FXSTOR is supported - -Arguments: - - None - -Returns: + ); - TRUE - supported - FALSE - not supported +/** + Return the physical address of IDTR. ---*/ -; + @return The physical address of IDTR. +**/ DESCRIPTOR * GetIdtr ( VOID - ) -/*++ - -Routine Description: - - Return the physical address of IDTR - -Arguments: - - None - -Returns: + ); - The physical address of IDTR +/** + Encodes an IDT descriptor with the given physical address. ---*/ -; + @param DestDesc The IDT descriptor address. + @param Vecotr The interrupt vector entry. +**/ VOID Vect2Desc ( DESCRIPTOR * DestDesc, VOID (*Vector) (VOID) - ) -/*++ - -Routine Description: - - Encodes an IDT descriptor with the given physical address - -Arguments: - - DestDesc - The IDT descriptor address - Vector - The interrupt vector entry + ); -Returns: +/** + Programs interrupt flag to the requested state and returns previous + state. - None + @param NewState New interrupt status. ---*/ -; + @retval TRUE Old interrupt status is TRUE. + @retval FALSE Old interrupt status is FALSE +**/ BOOLEAN WriteInterruptFlag ( BOOLEAN NewState - ) -/*++ - -Routine Description: - - Programs interrupt flag to the requested state and returns previous - state. - -Arguments: - - NewState - New interrupt status - -Returns: + ); - Old interrupt status +/** + Initializes driver's handler registration databas. + + This code executes in boot services context + Must be public because it's referenced from DebugSupport.c ---*/ -; + @retval EFI_UNSUPPORTED If x64 processor does not support FXSTOR/FXRSTOR instructions, + the context save will fail, so these processor's are not supported. + @retval EFI_OUT_OF_RESOURCES Fails to allocate memory. + @retval EFI_SUCCESS Initializes successfully. +**/ EFI_STATUS -plInitializeDebugSupportDriver ( +PlInitializeDebugSupportDriver ( VOID - ) -/*++ - -Routine Description: - Initializes driver's handler registration database. - - This code executes in boot services context. + ); -Arguments: - None +/** + This is the callback that is written to the LoadedImage protocol instance + on the image handle. It uninstalls all registered handlers and frees all entry + stub memory. -Returns: - EFI_SUCCESS - EFI_UNSUPPORTED - if X64 processor does not support FXSTOR/FXRSTOR instructions, - the context save will fail, so these processor's are not supported. - EFI_OUT_OF_RESOURCES - not resource to finish initialization + @param ImageHandle The firmware allocated handle for the EFI image. ---*/ -; + @retval EFI_SUCCESS Always. +**/ EFI_STATUS EFIAPI -plUnloadDebugSupportDriver ( +PlUnloadDebugSupportDriver ( IN EFI_HANDLE ImageHandle - ) -/*++ - -Routine Description: - This is the callback that is written to the LoadedImage protocol instance - on the image handle. It uninstalls all registered handlers and frees all entry - stub memory. - - This code executes in boot services context. - -Arguments: - ImageHandle - The image handle of the unload handler + ); -Returns: +/** + This is a DebugSupport protocol member function, hard + coded to support only 1 processor for now. - EFI_SUCCESS - always return success + @param This The DebugSupport instance + @param MaxProcessorIndex The maximuim supported processor index ---*/ -; + @retval EFI_SUCCESS Always returned with **MaxProcessorIndex set to 0. -// -// DebugSupport protocol member functions -// +**/ EFI_STATUS EFIAPI GetMaximumProcessorIndex ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, OUT UINTN *MaxProcessorIndex - ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. + ); -Arguments: - This - The DebugSupport instance - MaxProcessorIndex - The maximuim supported processor index +/** + DebugSupport protocol member function. -Returns: - Always returns EFI_SUCCESS with *MaxProcessorIndex set to 0 + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param PeriodicCallback Callback function ---*/ -; + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterPeriodicCallback ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, IN EFI_PERIODIC_CALLBACK PeriodicCallback - ) -/*++ - -Routine Description: This is a DebugSupport protocol member function. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - PeriodicCallback - Callback function + ); -Returns: +/** + DebugSupport protocol member function. - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. + This code executes in boot services context. - Other possible return values are passed through from UnHookEntry and HookEntry. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param NewCallback Callback function + @param ExceptionType Which exception to hook ---*/ -; + @retval EFI_SUCCESS Indicates the callback was registered. + @retval others Callback was not registered. +**/ EFI_STATUS EFIAPI RegisterExceptionCallback ( @@ -279,32 +213,19 @@ RegisterExceptionCallback ( IN UINTN ProcessorIndex, IN EFI_EXCEPTION_CALLBACK NewCallback, IN EFI_EXCEPTION_TYPE ExceptionType - ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - - This code executes in boot services context. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - NewCallback - Callback function - ExceptionType - Which exception to hook - -Returns: + ); - EFI_SUCCESS - EFI_INVALID_PARAMETER - requested uninstalling a handler from a vector that has - no handler registered for it - EFI_ALREADY_STARTED - requested install to a vector that already has a handler registered. +/** + DebugSupport protocol member function. Calls assembly routine to flush cache. - Other possible return values are passed through from UnHookEntry and HookEntry. + @param This The DebugSupport instance + @param ProcessorIndex Which processor the callback applies to. + @param Start Physical base of the memory range to be invalidated + @param Length mininum number of bytes in instruction cache to invalidate ---*/ -; + @retval EFI_SUCCESS Always returned. +**/ EFI_STATUS EFIAPI InvalidateInstructionCache ( @@ -312,24 +233,6 @@ InvalidateInstructionCache ( IN UINTN ProcessorIndex, IN VOID *Start, IN UINT64 Length - ) -/*++ - -Routine Description: - This is a DebugSupport protocol member function. - Calls assembly routine to flush cache. - -Arguments: - This - The DebugSupport instance - ProcessorIndex - Which processor the callback applies to. - Start - Physical base of the memory range to be invalidated - Length - mininum number of bytes in instruction cache to invalidate - -Returns: - - EFI_SUCCESS - always return success - ---*/ -; + ); #endif -- 2.39.2