summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/EbcDxe/EbcDebugger/EdbDisasmSupport.h
blob: f66261bcbdeec412e4e65de366ace5117ad85674 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
/*++

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