git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3387 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			333 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			333 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**@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
 | |
| 
 | |
| 
 | |
| #include <PiDxe.h>
 | |
| 
 | |
| #include <Protocol/DebugSupport.h>
 | |
| #include <Protocol/LoadedImage.h>
 | |
| 
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/UefiDriverEntryPoint.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/PcdLib.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
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| 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
 |