REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			568 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			568 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _EFI_EDB_DISASM_SUPPORT_H_
 | 
						|
#define _EFI_EDB_DISASM_SUPPORT_H_
 | 
						|
 | 
						|
#include <Uefi.h>
 | 
						|
 | 
						|
#define EDB_BYTECODE_NUMBER_IN_LINE  5
 | 
						|
 | 
						|
#ifdef EFI32
 | 
						|
#define EDB_PRINT_ADDRESS_FORMAT  L"%08x: "
 | 
						|
#else
 | 
						|
// To use 012l instead of 016l because space is not enough
 | 
						|
#define EDB_PRINT_ADDRESS_FORMAT  L"%012lx: "
 | 
						|
#endif
 | 
						|
 | 
						|
#define OPCODE_MAX  0x40
 | 
						|
 | 
						|
#define EDB_INSTRUCTION_NAME_MAX_LENGTH     10
 | 
						|
#define EDB_INSTRUCTION_NAME_MAX_SIZE       (EDB_INSTRUCTION_NAME_MAX_LENGTH * sizeof(CHAR16))
 | 
						|
#define EDB_INSTRUCTION_CONTENT_MAX_LENGTH  30
 | 
						|
#define EDB_INSTRUCTION_CONTENT_MAX_SIZE    (EDB_INSTRUCTION_CONTENT_MAX_LENGTH * sizeof(CHAR16))
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Set offset for Instruction name and content.
 | 
						|
 | 
						|
  @param  InstructionNameOffset     - Instruction name offset
 | 
						|
  @param  InstructionContentOffset  - Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EdbSetOffset (
 | 
						|
  IN UINTN  InstructionNameOffset,
 | 
						|
  IN UINTN  InstructionContentOffset
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Pre instruction string construction.
 | 
						|
 | 
						|
  @return Instruction string
 | 
						|
 | 
						|
**/
 | 
						|
CHAR16 *
 | 
						|
EdbPreInstructionString (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Post instruction string construction.
 | 
						|
 | 
						|
  @return Instruction string
 | 
						|
 | 
						|
**/
 | 
						|
CHAR16 *
 | 
						|
EdbPostInstructionString (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the instruction name.
 | 
						|
 | 
						|
  @param  Name - instruction name
 | 
						|
 | 
						|
  @return Instruction name offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintInstructionName (
 | 
						|
  IN CHAR16  *Name
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Get Sign, NaturalUnits, and ConstantUnits of the WORD data.
 | 
						|
 | 
						|
  @param  Data16        - WORD data
 | 
						|
  @param  NaturalUnits  - Natural Units of the WORD
 | 
						|
  @param  ConstantUnits - Constant Units of the WORD
 | 
						|
 | 
						|
  @return Sign value of WORD
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EdbGetNaturalIndex16 (
 | 
						|
  IN  UINT16  Data16,
 | 
						|
  OUT UINTN   *NaturalUnits,
 | 
						|
  OUT UINTN   *ConstantUnits
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Get Sign, NaturalUnits, and ConstantUnits of the DWORD data.
 | 
						|
 | 
						|
  @param  Data32        - DWORD data
 | 
						|
  @param  NaturalUnits  - Natural Units of the DWORD
 | 
						|
  @param  ConstantUnits - Constant Units of the DWORD
 | 
						|
 | 
						|
  @return Sign value of DWORD
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EdbGetNaturalIndex32 (
 | 
						|
  IN  UINT32  Data32,
 | 
						|
  OUT UINTN   *NaturalUnits,
 | 
						|
  OUT UINTN   *ConstantUnits
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Get Sign, NaturalUnits, and ConstantUnits of the QWORD data.
 | 
						|
 | 
						|
  @param  Data64        - QWORD data
 | 
						|
  @param  NaturalUnits  - Natural Units of the QWORD
 | 
						|
  @param  ConstantUnits - Constant Units of the QWORD
 | 
						|
 | 
						|
  @return Sign value of QWORD
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EdbGetNaturalIndex64 (
 | 
						|
  IN  UINT64  Data64,
 | 
						|
  OUT UINT64  *NaturalUnits,
 | 
						|
  OUT UINT64  *ConstantUnits
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical WORD raw index data to instruction content.
 | 
						|
 | 
						|
  @param  Data16 - WORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintRawIndexData16 (
 | 
						|
  IN UINT16  Data16
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical DWORD raw index data to instruction content.
 | 
						|
 | 
						|
  @param  Data32 - DWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintRawIndexData32 (
 | 
						|
  IN UINT32  Data32
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical QWORD raw index data to instruction content.
 | 
						|
 | 
						|
  @param  Data64 - QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintRawIndexData64 (
 | 
						|
  IN UINT64  Data64
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print register 1 in operands.
 | 
						|
 | 
						|
  @param  Operands - instruction operands
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintRegister1 (
 | 
						|
  IN UINT8  Operands
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print register 2 in operands.
 | 
						|
 | 
						|
  @param  Operands - instruction operands
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintRegister2 (
 | 
						|
  IN UINT8  Operands
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print dedicated register 1 in operands.
 | 
						|
 | 
						|
  @param Operands - instruction operands
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintDedicatedRegister1 (
 | 
						|
  IN UINT8  Operands
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print dedicated register 2 in operands.
 | 
						|
 | 
						|
  @param  Operands - instruction operands
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintDedicatedRegister2 (
 | 
						|
  IN UINT8  Operands
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical UINTN index data to instruction content.
 | 
						|
 | 
						|
  @param  Sign          - Signed bit of UINTN data
 | 
						|
  @param  NaturalUnits  - natural units of UINTN data
 | 
						|
  @param  ConstantUnits - natural units of UINTN data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintIndexData (
 | 
						|
  IN BOOLEAN  Sign,
 | 
						|
  IN UINTN    NaturalUnits,
 | 
						|
  IN UINTN    ConstantUnits
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical QWORD index data to instruction content.
 | 
						|
 | 
						|
  @param  Sign          - Signed bit of QWORD data
 | 
						|
  @param  NaturalUnits  - natural units of QWORD data
 | 
						|
  @param  ConstantUnits - natural units of QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintIndexData64 (
 | 
						|
  IN BOOLEAN  Sign,
 | 
						|
  IN UINT64   NaturalUnits,
 | 
						|
  IN UINT64   ConstantUnits
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical BYTE immediate data to instruction content.
 | 
						|
 | 
						|
  @param  Data - BYTE data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintImmData8 (
 | 
						|
  IN UINT8  Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical WORD immediate data to instruction content.
 | 
						|
 | 
						|
  @param  Data - WORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintImmData16 (
 | 
						|
  IN UINT16  Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical DWORD immediate data to instruction content.
 | 
						|
 | 
						|
  @param  Data - DWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintImmData32 (
 | 
						|
  IN UINT32  Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical QWORD immediate data to instruction content.
 | 
						|
 | 
						|
  @param  Data - QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintImmData64 (
 | 
						|
  IN UINT64  Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal UINTN immediate data to instruction content.
 | 
						|
 | 
						|
  @param  Data - UINTN data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintImmDatan (
 | 
						|
  IN UINTN  Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal QWORD immediate data to instruction content.
 | 
						|
 | 
						|
  @param  Data64 - QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintImmData64n (
 | 
						|
  IN UINT64  Data64
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical BYTE to instruction content.
 | 
						|
 | 
						|
  @param  Data8 - BYTE data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData8 (
 | 
						|
  IN UINT8  Data8
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical WORD to instruction content.
 | 
						|
 | 
						|
  @param  Data16 - WORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData16 (
 | 
						|
  IN UINT16  Data16
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical DWORD to instruction content.
 | 
						|
 | 
						|
  @param  Data32 - DWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData32 (
 | 
						|
  IN UINT32  Data32
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the hexical QWORD to instruction content.
 | 
						|
 | 
						|
  @param  Data64 - QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData64 (
 | 
						|
  IN UINT64  Data64
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal unsigned UINTN to instruction content.
 | 
						|
 | 
						|
  @param  Data - unsigned UINTN data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintDatan (
 | 
						|
  IN UINTN  Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal unsigned QWORD to instruction content.
 | 
						|
 | 
						|
  @param  Data64 - unsigned QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData64n (
 | 
						|
  IN UINT64  Data64
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal signed BYTE to instruction content.
 | 
						|
 | 
						|
  @param  Data8 - signed BYTE data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData8s (
 | 
						|
  IN UINT8  Data8
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal signed WORD to instruction content.
 | 
						|
 | 
						|
  @param  Data16 - signed WORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData16s (
 | 
						|
  IN UINT16  Data16
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal signed DWORD to instruction content.
 | 
						|
 | 
						|
  @param  Data32 - signed DWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData32s (
 | 
						|
  IN UINT32  Data32
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the decimal signed QWORD to instruction content.
 | 
						|
 | 
						|
  @param  Data64 - signed QWORD data
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintData64s (
 | 
						|
  IN UINT64  Data64
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the comma to instruction content.
 | 
						|
 | 
						|
  @return Instruction content offset
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbPrintComma (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Find the symbol string according to address, then print it.
 | 
						|
 | 
						|
  @param  Address - instruction address
 | 
						|
 | 
						|
  @retval 1 - symbol string is found and printed
 | 
						|
  @retval 0 - symbol string not found
 | 
						|
 | 
						|
**/
 | 
						|
UINTN
 | 
						|
EdbFindAndPrintSymbol (
 | 
						|
  IN UINTN  Address
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the EBC byte code.
 | 
						|
 | 
						|
  @param  InstructionAddress - instruction address
 | 
						|
  @param  InstructionNumber  - instruction number
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EdbPrintRaw (
 | 
						|
  IN EFI_PHYSICAL_ADDRESS  InstructionAddress,
 | 
						|
  IN UINTN                 InstructionNumber
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Print the EBC asm code.
 | 
						|
 | 
						|
  @param  DebuggerPrivate - EBC Debugger private data structure
 | 
						|
  @param  SystemContext   - EBC system context.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS - show disasm successfully
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EdbShowDisasm (
 | 
						|
  IN     EFI_DEBUGGER_PRIVATE_DATA  *DebuggerPrivate,
 | 
						|
  IN     EFI_SYSTEM_CONTEXT         SystemContext
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Get register value according to the system context, and register index.
 | 
						|
 | 
						|
  @param  SystemContext   - EBC system context.
 | 
						|
  @param  Index           - EBC register index
 | 
						|
 | 
						|
  @return register value
 | 
						|
 | 
						|
**/
 | 
						|
UINT64
 | 
						|
GetRegisterValue (
 | 
						|
  IN     EFI_SYSTEM_CONTEXT  SystemContext,
 | 
						|
  IN     UINT8               Index
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |