3#ifndef UACPI_BAREBONES_MODE
5#define UACPI_OP(opname, opcode, ...) \
6 { #opname, .decode_ops = __VA_ARGS__, .code = opcode },
8#define UACPI_OUT_OF_LINE_OP(opname, opcode, out_of_line_buf, props) \
11 .indirect_decode_ops = out_of_line_buf, \
12 .properties = props, \
24#define _(op) (op & 0x00FF)
27 [
_(UACPI_AML_OP_MutexOp)] = 1, [
_(UACPI_AML_OP_EventOp)] = 2,
28 [
_(UACPI_AML_OP_CondRefOfOp)] = 3, [
_(UACPI_AML_OP_CreateFieldOp)] = 4,
29 [
_(UACPI_AML_OP_LoadTableOp)] = 5, [
_(UACPI_AML_OP_LoadOp)] = 6,
30 [
_(UACPI_AML_OP_StallOp)] = 7, [
_(UACPI_AML_OP_SleepOp)] = 8,
31 [
_(UACPI_AML_OP_AcquireOp)] = 9, [
_(UACPI_AML_OP_SignalOp)] = 10,
32 [
_(UACPI_AML_OP_WaitOp)] = 11, [
_(UACPI_AML_OP_ResetOp)] = 12,
33 [
_(UACPI_AML_OP_ReleaseOp)] = 13, [
_(UACPI_AML_OP_FromBCDOp)] = 14,
34 [
_(UACPI_AML_OP_ToBCDOp)] = 15, [
_(UACPI_AML_OP_UnloadOp)] = 16,
35 [
_(UACPI_AML_OP_RevisionOp)] = 17, [
_(UACPI_AML_OP_DebugOp)] = 18,
36 [
_(UACPI_AML_OP_FatalOp)] = 19, [
_(UACPI_AML_OP_TimerOp)] = 20,
37 [
_(UACPI_AML_OP_OpRegionOp)] = 21, [
_(UACPI_AML_OP_FieldOp)] = 22,
38 [
_(UACPI_AML_OP_DeviceOp)] = 23, [
_(UACPI_AML_OP_ProcessorOp)] = 24,
39 [
_(UACPI_AML_OP_PowerResOp)] = 25, [
_(UACPI_AML_OP_ThermalZoneOp)] = 26,
40 [
_(UACPI_AML_OP_IndexFieldOp)] = 27, [
_(UACPI_AML_OP_BankFieldOp)] = 28,
41 [
_(UACPI_AML_OP_DataRegionOp)] = 29,
52#define PARSE_FIELD_ELEMENTS(parse_loop_pc) \
54 UACPI_PARSE_OP_IF_HAS_DATA, 44, \
56 UACPI_PARSE_OP_LOAD_IMM, 1, \
59 UACPI_PARSE_OP_IF_LAST_EQUALS, 0x00, 3, \
60 UACPI_PARSE_OP_PKGLEN, \
61 UACPI_PARSE_OP_JMP, parse_loop_pc, \
64 UACPI_PARSE_OP_IF_LAST_EQUALS, 0x01, 6, \
65 UACPI_PARSE_OP_LOAD_IMM, 1, \
66 UACPI_PARSE_OP_LOAD_IMM, 1, \
67 UACPI_PARSE_OP_JMP, parse_loop_pc, \
70 UACPI_PARSE_OP_IF_LAST_EQUALS, 0x02, 5, \
71 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
72 UACPI_PARSE_OP_TYPECHECK, UACPI_OBJECT_BUFFER, \
73 UACPI_PARSE_OP_JMP, parse_loop_pc, \
77 UACPI_PARSE_OP_IF_LAST_EQUALS, 0x03, 8, \
78 UACPI_PARSE_OP_LOAD_IMM, 1, \
79 UACPI_PARSE_OP_LOAD_IMM, 1, \
80 UACPI_PARSE_OP_LOAD_IMM, 1, \
81 UACPI_PARSE_OP_JMP, parse_loop_pc, \
89 UACPI_PARSE_OP_ITEM_POP, \
90 UACPI_PARSE_OP_AML_PC_DECREMENT, \
91 UACPI_PARSE_OP_CREATE_NAMESTRING, \
92 UACPI_PARSE_OP_PKGLEN, \
93 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_FIELD_UNIT, \
94 UACPI_PARSE_OP_JMP, parse_loop_pc, \
96 UACPI_PARSE_OP_INVOKE_HANDLER, \
197#define POP(x) UACPI_PARSE_OP_##x
201 [
POP(
END)] =
"<END-OF-OP>",
202 [
POP(SKIP_WITH_WARN_IF_NULL)] =
"SKIP_WITH_WARN_IF_NULL",
203 [
POP(EMIT_SKIP_WARN)] =
"EMIT_SKIP_WARN",
204 [
POP(SIMPLE_NAME)] =
"SIMPLE_NAME",
205 [
POP(SUPERNAME)] =
"SUPERNAME",
206 [
POP(SUPERNAME_OR_UNRESOLVED)] =
"SUPERNAME_OR_UNRESOLVED",
207 [
POP(TERM_ARG)] =
"TERM_ARG",
208 [
POP(TERM_ARG_UNWRAP_INTERNAL)] =
"TERM_ARG_UNWRAP_INTERNAL",
209 [
POP(TERM_ARG_OR_NAMED_OBJECT)] =
"TERM_ARG_OR_NAMED_OBJECT",
210 [
POP(TERM_ARG_OR_NAMED_OBJECT_OR_UNRESOLVED)] =
"TERM_ARG_OR_NAMED_OBJECT_OR_UNRESOLVED",
211 [
POP(OPERAND)] =
"OPERAND",
213 [
POP(COMPUTATIONAL_DATA)] =
"COMPUTATIONAL_DATA",
215 [
POP(PKGLEN)] =
"PKGLEN",
216 [
POP(TRACKED_PKGLEN)] =
"TRACKED_PKGLEN",
217 [
POP(CREATE_NAMESTRING)] =
"CREATE_NAMESTRING",
218 [
POP(CREATE_NAMESTRING_OR_NULL_IF_LOAD)] =
"CREATE_NAMESTRING_OR_NULL_IF_LOAD",
219 [
POP(EXISTING_NAMESTRING)] =
"EXISTING_NAMESTRING",
220 [
POP(EXISTING_NAMESTRING_OR_NULL)] =
"EXISTING_NAMESTRING_OR_NULL",
221 [
POP(EXISTING_NAMESTRING_OR_NULL_IF_LOAD)] =
"EXISTING_NAMESTRING_OR_NULL_IF_LOAD",
222 [
POP(INVOKE_HANDLER)] =
"INVOKE_HANDLER",
223 [
POP(OBJECT_ALLOC)] =
"OBJECT_ALLOC",
224 [
POP(EMPTY_OBJECT_ALLOC)] =
"EMPTY_OBJECT_ALLOC",
225 [
POP(OBJECT_CONVERT_TO_SHALLOW_COPY)] =
"OBJECT_CONVERT_TO_SHALLOW_COPY",
226 [
POP(OBJECT_CONVERT_TO_DEEP_COPY)] =
"OBJECT_CONVERT_TO_DEEP_COPY",
227 [
POP(OBJECT_ALLOC_TYPED)] =
"OBJECT_ALLOC_TYPED",
228 [
POP(RECORD_AML_PC)] =
"RECORD_AML_PC",
229 [
POP(LOAD_INLINE_IMM_AS_OBJECT)] =
"LOAD_INLINE_IMM_AS_OBJECT",
230 [
POP(LOAD_INLINE_IMM)] =
"LOAD_INLINE_IMM",
231 [
POP(LOAD_ZERO_IMM)] =
"LOAD_ZERO_IMM",
232 [
POP(LOAD_IMM)] =
"LOAD_IMM",
233 [
POP(LOAD_IMM_AS_OBJECT)] =
"LOAD_IMM_AS_OBJECT",
234 [
POP(LOAD_FALSE_OBJECT)] =
"LOAD_FALSE_OBJECT",
235 [
POP(LOAD_TRUE_OBJECT)] =
"LOAD_TRUE_OBJECT",
236 [
POP(TRUNCATE_NUMBER)] =
"TRUNCATE_NUMBER",
237 [
POP(TYPECHECK)] =
"TYPECHECK",
238 [
POP(INSTALL_NAMESPACE_NODE)] =
"INSTALL_NAMESPACE_NODE",
239 [
POP(OBJECT_TRANSFER_TO_PREV)] =
"OBJECT_TRANSFER_TO_PREV",
240 [
POP(OBJECT_COPY_TO_PREV)] =
"OBJECT_COPY_TO_PREV",
241 [
POP(STORE_TO_TARGET)] =
"STORE_TO_TARGET",
242 [
POP(STORE_TO_TARGET_INDIRECT)] =
"STORE_TO_TARGET_INDIRECT",
244 [
POP(BAD_OPCODE)] =
"BAD_OPCODE",
245 [
POP(AML_PC_DECREMENT)] =
"AML_PC_DECREMENT",
246 [
POP(IMM_DECREMENT)] =
"IMM_DECREMENT",
247 [
POP(ITEM_POP)] =
"ITEM_POP",
248 [
POP(DISPATCH_METHOD_CALL)] =
"DISPATCH_METHOD_CALL",
249 [
POP(DISPATCH_TABLE_LOAD)] =
"DISPATCH_TABLE_LOAD",
250 [
POP(CONVERT_NAMESTRING)] =
"CONVERT_NAMESTRING",
251 [
POP(IF_HAS_DATA)] =
"IF_HAS_DATA",
252 [
POP(IF_NULL)] =
"IF_NULL",
253 [
POP(IF_LAST_NULL)] =
"IF_LAST_NULL",
254 [
POP(IF_NOT_NULL)] =
"IF_NOT_NULL",
255 [
POP(IF_LAST_NOT_NULL)] =
"IF_NOT_NULL",
256 [
POP(IF_LAST_EQUALS)] =
"IF_LAST_EQUALS",
257 [
POP(IF_LAST_FALSE)] =
"IF_LAST_FALSE",
258 [
POP(IF_LAST_TRUE)] =
"IF_LAST_TRUE",
259 [
POP(SWITCH_TO_NEXT_IF_EQUALS)] =
"SWITCH_TO_NEXT_IF_EQUALS",
260 [
POP(IF_SWITCHED_FROM)] =
"IF_SWITCHED_FROM",
267 return "<INVALID-OP>";
@ UACPI_PARSE_OP_STORE_TO_TARGET_INDIRECT
@ UACPI_PARSE_OP_TRACKED_PKGLEN
@ UACPI_PARSE_OP_LOAD_TRUE_OBJECT
@ UACPI_PARSE_OP_EXISTING_NAMESTRING
@ UACPI_PARSE_OP_INVOKE_HANDLER
@ UACPI_PARSE_OP_DISPATCH_TABLE_LOAD
@ UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL
@ UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV
@ UACPI_PARSE_OP_LOAD_IMM
@ UACPI_PARSE_OP_STORE_TO_TARGET
@ UACPI_PARSE_OP_IF_NOT_NULL
@ UACPI_PARSE_OP_LOAD_FALSE_OBJECT
@ UACPI_PARSE_OP_OBJECT_ALLOC_TYPED
@ UACPI_PARSE_OP_LOAD_ZERO_IMM
@ UACPI_PARSE_OP_IMM_DECREMENT
@ UACPI_PARSE_OP_LOAD_INLINE_IMM
#define UACPI_ENUMERATE_EXT_OPCODES
#define UACPI_ENUMERATE_OPCODES
static const uacpi_char *const pop_names[UACPI_PARSE_OP_MAX+1]
uacpi_u8 uacpi_load_table_op_decode_ops[]
const uacpi_char * uacpi_parse_op_to_string(enum uacpi_parse_op op)
static const uacpi_u8 ext_op_to_idx[0x100]
uacpi_u8 uacpi_load_op_decode_ops[]
static const struct uacpi_op_spec ext_opcode_table[]
uacpi_u8 uacpi_bank_field_op_decode_ops[]
uacpi_u8 uacpi_field_op_decode_ops[]
#define PARSE_FIELD_ELEMENTS(parse_loop_pc)
static const struct uacpi_op_spec opcode_table[0x100]
const struct uacpi_op_spec * uacpi_get_op_spec(uacpi_aml_op op)
uacpi_u8 uacpi_index_field_op_decode_ops[]