/**@file IPF specific debugsupport types, macros, and definitions. Copyright (c) 2004 - 2006 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 http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef _PLDEBUG_SUPPORT_H #define _PLDEBUG_SUPPORT_H #define DISABLE_INTERRUPTS 0UL // // The remaining definitions comprise the protocol members. // #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: Returns: 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: EFI_STATUS - anything other than EFI_SUCCESS indicates the callback was not registered. --*/ ; // // Assembly worker functions and data referenced from plDebugSupport.c // VOID * GetIva ( VOID ) /*++ Routine Description: C callable function to obtain the current value of IVA Arguments: None Returns: Current value if IVA --*/ ; 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 --*/ ; VOID ChainHandler ( VOID ) /*++ Routine Description: Chains an interrupt handler Arguments: None Returns: None --*/ ; VOID UnchainHandler ( VOID ) /*++ Routine Description: Unchains an interrupt handler Arguments: None Returns: None --*/ ; 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 --*/ ; 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: None --*/ ; 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 --*/ ; EFI_STATUS EFIAPI RegisterPeriodicCallback ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, IN UINTN ProcessorIndex, 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 Returns: EFI_STATUS - anything other than EFI_SUCCESS indicates the 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_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. --*/ ; EFI_STATUS EFIAPI InvalidateInstructionCache ( IN EFI_DEBUG_SUPPORT_PROTOCOL *This, 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 --*/ ; #endif