15#ifndef __EFI_EBC_PROTOCOL_H__
16#define __EFI_EBC_PROTOCOL_H__
18#define EFI_EBC_INTERPRETER_PROTOCOL_GUID \
20 0x13AC6DD1, 0x73D0, 0x11D4, {0xB0, 0x6B, 0x00, 0xAA, 0x00, 0xBD, 0x6D, 0xE7 } \
26#define OPCODE_BREAK 0x00
27#define OPCODE_JMP 0x01
28#define OPCODE_JMP8 0x02
29#define OPCODE_CALL 0x03
30#define OPCODE_RET 0x04
31#define OPCODE_CMPEQ 0x05
32#define OPCODE_CMPLTE 0x06
33#define OPCODE_CMPGTE 0x07
34#define OPCODE_CMPULTE 0x08
35#define OPCODE_CMPUGTE 0x09
36#define OPCODE_NOT 0x0A
37#define OPCODE_NEG 0x0B
38#define OPCODE_ADD 0x0C
39#define OPCODE_SUB 0x0D
40#define OPCODE_MUL 0x0E
41#define OPCODE_MULU 0x0F
42#define OPCODE_DIV 0x10
43#define OPCODE_DIVU 0x11
44#define OPCODE_MOD 0x12
45#define OPCODE_MODU 0x13
46#define OPCODE_AND 0x14
48#define OPCODE_XOR 0x16
49#define OPCODE_SHL 0x17
50#define OPCODE_SHR 0x18
51#define OPCODE_ASHR 0x19
52#define OPCODE_EXTNDB 0x1A
53#define OPCODE_EXTNDW 0x1B
54#define OPCODE_EXTNDD 0x1C
55#define OPCODE_MOVBW 0x1D
56#define OPCODE_MOVWW 0x1E
57#define OPCODE_MOVDW 0x1F
58#define OPCODE_MOVQW 0x20
59#define OPCODE_MOVBD 0x21
60#define OPCODE_MOVWD 0x22
61#define OPCODE_MOVDD 0x23
62#define OPCODE_MOVQD 0x24
63#define OPCODE_MOVSNW 0x25
64#define OPCODE_MOVSND 0x26
68#define OPCODE_MOVQQ 0x28
69#define OPCODE_LOADSP 0x29
70#define OPCODE_STORESP 0x2A
71#define OPCODE_PUSH 0x2B
72#define OPCODE_POP 0x2C
73#define OPCODE_CMPIEQ 0x2D
74#define OPCODE_CMPILTE 0x2E
75#define OPCODE_CMPIGTE 0x2F
76#define OPCODE_CMPIULTE 0x30
77#define OPCODE_CMPIUGTE 0x31
78#define OPCODE_MOVNW 0x32
79#define OPCODE_MOVND 0x33
83#define OPCODE_PUSHN 0x35
84#define OPCODE_POPN 0x36
85#define OPCODE_MOVI 0x37
86#define OPCODE_MOVIN 0x38
87#define OPCODE_MOVREL 0x39
92#define OPCODE_M_OPCODE 0x3F
93#define OPCODE_M_IMMDATA 0x80
94#define OPCODE_M_IMMDATA64 0x40
95#define OPCODE_M_64BIT 0x40
96#define OPCODE_M_RELADDR 0x10
97#define OPCODE_M_CMPI32_DATA 0x80
98#define OPCODE_M_CMPI64 0x40
99#define OPERAND_M_MOVIN_N 0x80
100#define OPERAND_M_CMPI_INDEX 0x10
106#define OPCODE_M_IMMED_OP1 0x80
107#define OPCODE_M_IMMED_OP2 0x40
112#define OPERAND_M_INDIRECT1 0x08
113#define OPERAND_M_INDIRECT2 0x80
114#define OPERAND_M_OP1 0x07
115#define OPERAND_M_OP2 0x70
120#define DATAMANIP_M_64 0x40
121#define DATAMANIP_M_IMMDATA 0x80
127#define OPCODE_M_IMMED_OP2 0x40
134#define MOVI_M_IMMDATA 0x40
135#define MOVI_M_DATAWIDTH 0xC0
136#define MOVI_DATAWIDTH16 0x40
137#define MOVI_DATAWIDTH32 0x80
138#define MOVI_DATAWIDTH64 0xC0
139#define MOVI_M_MOVEWIDTH 0x30
140#define MOVI_MOVEWIDTH8 0x00
141#define MOVI_MOVEWIDTH16 0x10
142#define MOVI_MOVEWIDTH32 0x20
143#define MOVI_MOVEWIDTH64 0x30
148#define OPERAND_M_RELATIVE_ADDR 0x10
149#define OPERAND_M_NATIVE_CALL 0x20
154#define PUSHPOP_M_IMMDATA 0x80
155#define PUSHPOP_M_64 0x40
159#define JMP_M_RELATIVE 0x10
160#define JMP_M_CONDITIONAL 0x80
166#define OPERAND1_INDIRECT(op) ((op) & OPERAND_M_INDIRECT1)
167#define OPERAND2_INDIRECT(op) ((op) & OPERAND_M_INDIRECT2)
172#define OPERAND1_REGNUM(op) ((op) & OPERAND_M_OP1)
173#define OPERAND2_REGNUM(op) (((op) & OPERAND_M_OP2) >> 4)
175#define OPERAND1_CHAR(op) ('0' + OPERAND1_REGNUM (op))
176#define OPERAND2_CHAR(op) ('0' + OPERAND2_REGNUM (op))
181#define CONDITION_M_CONDITIONAL 0x80
182#define CONDITION_M_CS 0x40
187#define EFI_EBC_PROTOCOL_GUID EFI_EBC_INTERPRETER_PROTOCOL_GUID
#define EFIAPI
Definition ProcessorBind.h:172
#define IN
Definition Base.h:347
#define OUT
Definition Base.h:352
EFI_GUID gEfiEbcProtocolGuid
EFI_STATUS(EFIAPI * EFI_EBC_CREATE_THUNK)(IN EFI_EBC_PROTOCOL *This, IN EFI_HANDLE ImageHandle, IN VOID *EbcEntryPoint, OUT VOID **Thunk)
Definition Ebc.h:214
EFI_STATUS(EFIAPI * EFI_EBC_UNLOAD_IMAGE)(IN EFI_EBC_PROTOCOL *This, IN EFI_HANDLE ImageHandle)
Definition Ebc.h:237
EFI_STATUS(EFIAPI * EFI_EBC_GET_VERSION)(IN EFI_EBC_PROTOCOL *This, IN OUT UINT64 *Version)
Definition Ebc.h:291
EFI_STATUS(EFIAPI * EFI_EBC_REGISTER_ICACHE_FLUSH)(IN EFI_EBC_PROTOCOL *This, IN EBC_ICACHE_FLUSH Flush)
Definition Ebc.h:271
EFI_STATUS(EFIAPI * EBC_ICACHE_FLUSH)(IN EFI_PHYSICAL_ADDRESS Start, IN UINT64 Length)
Definition Ebc.h:254
UINT64 EFI_PHYSICAL_ADDRESS
Definition UefiBaseType.h:54
RETURN_STATUS EFI_STATUS
Definition UefiBaseType.h:33
VOID * EFI_HANDLE
Definition UefiBaseType.h:37
#define VOID
Definition acefi.h:190
ACPI_PHYSICAL_ADDRESS ACPI_SIZE Length
Definition acpixf.h:638
COMPILER_DEPENDENT_UINT64 UINT64
Definition actypes.h:239
EFI_EBC_GET_VERSION GetVersion
Definition Ebc.h:306
EFI_EBC_UNLOAD_IMAGE UnloadImage
Definition Ebc.h:304
EFI_EBC_REGISTER_ICACHE_FLUSH RegisterICacheFlush
Definition Ebc.h:305
EFI_EBC_CREATE_THUNK CreateThunk
Definition Ebc.h:303