mirror of https://github.com/acidanthera/audk.git
242 lines
4.2 KiB
C
242 lines
4.2 KiB
C
/*++
|
|
|
|
Copyright (c) 2007, 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.
|
|
|
|
Module Name:
|
|
|
|
EdbDisasmSupport.h
|
|
|
|
Abstract:
|
|
|
|
|
|
--*/
|
|
|
|
#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))
|
|
|
|
VOID
|
|
EdbSetOffset (
|
|
IN UINTN InstructionNameOffset,
|
|
IN UINTN InstructionContentOffset
|
|
);
|
|
|
|
CHAR16 *
|
|
EdbPreInstructionString (
|
|
VOID
|
|
);
|
|
|
|
CHAR16 *
|
|
EdbPostInstructionString (
|
|
VOID
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintInstructionName (
|
|
IN CHAR16 *Name
|
|
);
|
|
|
|
BOOLEAN
|
|
EdbGetNaturalIndex16 (
|
|
IN UINT16 Data16,
|
|
OUT UINTN *NaturalUnits,
|
|
OUT UINTN *ConstantUnits
|
|
);
|
|
|
|
BOOLEAN
|
|
EdbGetNaturalIndex32 (
|
|
IN UINT32 Data32,
|
|
OUT UINTN *NaturalUnits,
|
|
OUT UINTN *ConstantUnits
|
|
);
|
|
|
|
BOOLEAN
|
|
EdbGetNaturalIndex64 (
|
|
IN UINT64 Data64,
|
|
OUT UINT64 *NaturalUnits,
|
|
OUT UINT64 *ConstantUnits
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintRawIndexData16 (
|
|
IN UINT16 Data16
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintRawIndexData32 (
|
|
IN UINT32 Data32
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintRawIndexData64 (
|
|
IN UINT64 Data64
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintRegister1 (
|
|
IN UINT8 Operands
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintRegister2 (
|
|
IN UINT8 Operands
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintDedicatedRegister1 (
|
|
IN UINT8 Operands
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintDedicatedRegister2 (
|
|
IN UINT8 Operands
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintIndexData (
|
|
IN BOOLEAN Sign,
|
|
IN UINTN NaturalUnits,
|
|
IN UINTN ConstantUnits
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintIndexData64 (
|
|
IN BOOLEAN Sign,
|
|
IN UINT64 NaturalUnits,
|
|
IN UINT64 ConstantUnits
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintImmData8 (
|
|
IN UINT8 Data
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintImmData16 (
|
|
IN UINT16 Data
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintImmData32 (
|
|
IN UINT32 Data
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintImmData64 (
|
|
IN UINT64 Data
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintImmDatan (
|
|
IN UINTN Data
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintImmData64n (
|
|
IN UINT64 Data64
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData8 (
|
|
IN UINT8 Data8
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData16 (
|
|
IN UINT16 Data16
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData32 (
|
|
IN UINT32 Data32
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData64 (
|
|
IN UINT64 Data64
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintDatan (
|
|
IN UINTN Data
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData64n (
|
|
IN UINT64 Data64
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData8s (
|
|
IN UINT8 Data8
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData16s (
|
|
IN UINT16 Data16
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData32s (
|
|
IN UINT32 Data32
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintData64s (
|
|
IN UINT64 Data64
|
|
);
|
|
|
|
UINTN
|
|
EdbPrintComma (
|
|
VOID
|
|
);
|
|
|
|
UINTN
|
|
EdbFindAndPrintSymbol (
|
|
IN UINTN Address
|
|
);
|
|
|
|
VOID
|
|
EdbPrintRaw (
|
|
IN EFI_PHYSICAL_ADDRESS InstructionAddress,
|
|
IN UINTN InstructionNumber
|
|
);
|
|
|
|
EFI_STATUS
|
|
EdbShowDisasm (
|
|
IN EFI_DEBUGGER_PRIVATE_DATA *DebuggerPrivate,
|
|
IN EFI_SYSTEM_CONTEXT SystemContext
|
|
);
|
|
|
|
UINT64
|
|
GetRegisterValue (
|
|
IN EFI_SYSTEM_CONTEXT SystemContext,
|
|
IN UINT8 Index
|
|
);
|
|
|
|
#endif
|