| /** @file | |
| Prototypes for the EBC Debugger hooks. | |
| Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR> | |
| 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 _EFI_EBC_DEBUGGER_HOOK_H_ | |
| #define _EFI_EBC_DEBUGGER_HOOK_H_ | |
| #include <Uefi.h> | |
| #include <Protocol/DebugSupport.h> | |
| #include <Protocol/EbcVmTest.h> | |
| /** | |
| The VM interpreter calls this function when an exception is detected. | |
| @param ExceptionType Specifies the processor exception detected. | |
| @param ExceptionFlags Specifies the exception context. | |
| @param VmPtr Pointer to a VM context for passing info to the | |
| EFI debugger. | |
| @retval EFI_SUCCESS This function completed successfully. | |
| **/ | |
| EFI_STATUS | |
| EbcDebugSignalException ( | |
| IN EFI_EXCEPTION_TYPE ExceptionType, | |
| IN EXCEPTION_FLAGS ExceptionFlags, | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in InitializeEbcDriver. | |
| @param Handle - The EbcDebugProtocol handle. | |
| @param EbcDebugProtocol - The EbcDebugProtocol interface. | |
| **/ | |
| VOID | |
| EbcDebuggerHookInit ( | |
| IN EFI_HANDLE Handle, | |
| IN EFI_DEBUG_SUPPORT_PROTOCOL *EbcDebugProtocol | |
| ); | |
| /** | |
| The hook in UnloadImage for EBC Interpreter. | |
| **/ | |
| VOID | |
| EbcDebuggerHookUnload ( | |
| VOID | |
| ); | |
| /** | |
| The hook in EbcUnloadImage. | |
| Currently do nothing here. | |
| @param Handle The EbcImage handle. | |
| **/ | |
| VOID | |
| EbcDebuggerHookEbcUnloadImage ( | |
| IN EFI_HANDLE Handle | |
| ); | |
| /** | |
| Hooks in EbcSupport.c | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookExecuteEbcImageEntryPoint ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteEbcImageEntryPoint. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookEbcInterpret ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in EbcExecute, before ExecuteFunction. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookExecuteStart ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in EbcExecute, after ExecuteFunction. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookExecuteEnd ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteCALL, before move IP. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookCALLStart ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteCALL, after move IP. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookCALLEnd ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteCALL, before call EbcLLCALLEX. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookCALLEXStart ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteCALL, after call EbcLLCALLEX. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookCALLEXEnd ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteRET, before move IP. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookRETStart ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteRET, after move IP. | |
| It will record trace information. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookRETEnd ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteJMP, before move IP. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookJMPStart ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteJMP, after move IP. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookJMPEnd ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteJMP8, before move IP. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookJMP8Start ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| /** | |
| The hook in ExecuteJMP8, after move IP.. | |
| @param VmPtr - pointer to VM context. | |
| **/ | |
| VOID | |
| EbcDebuggerHookJMP8End ( | |
| IN VM_CONTEXT *VmPtr | |
| ); | |
| #endif |