ReactOS 0.4.16-dev-1946-g52006dd
opcodes.h
Go to the documentation of this file.
1#pragma once
2
3#include <uacpi/types.h>
4
6
7#define UACPI_EXT_PREFIX 0x5B
8#define UACPI_EXT_OP(op) ((UACPI_EXT_PREFIX << 8) | (op))
9
10#define UACPI_DUAL_NAME_PREFIX 0x2E
11#define UACPI_MULTI_NAME_PREFIX 0x2F
12#define UACPI_NULL_NAME 0x00
13
14/*
15 * Opcodes that tell the parser VM how to take apart every AML instruction.
16 * Every AML opcode has a list of these that is executed by the parser.
17 */
20
21 /*
22 * End the execution of the current instruction with a warning if the item
23 * at decode_ops[pc + 1] is NULL.
24 */
26
27 // Emit a warning as if the current opcode is being skipped
29
30 // SimpleName := NameString | ArgObj | LocalObj
32
33 // SuperName := SimpleName | DebugObj | ReferenceTypeOpcode
35 // The resulting item will be set to null if name couldn't be resolved
37
38 // TermArg := ExpressionOpcode | DataObject | ArgObj | LocalObj
41
42 /*
43 * Same as TERM_ARG, but named references are passed as-is.
44 * This means methods are not invoked, fields are not read, etc.
45 */
47
48 /*
49 * Same as UACPI_PARSE_OP_TERM_ARG_OR_NAMED_OBJECT but allows unresolved
50 * name strings.
51 */
53
54 // Operand := TermArg => Integer
56
57 // TermArg => String
59
60 /*
61 * ComputationalData := ByteConst | WordConst | DWordConst | QWordConst |
62 * String | ConstObj | RevisionOp | DefBuffer
63 */
65
66 // Target := SuperName | NullName
68
69 // Parses a pkglen
71
72 /*
73 * Parses a pkglen and records it, the end of this pkglen is considered
74 * the end of the instruction. The PC is always set to the end of this
75 * package once parser reaches UACPI_PARSE_OP_END.
76 */
78
79 /*
80 * Parse a NameString and create the last nameseg.
81 * Note that this errors out if last nameseg already exists.
82 */
84
85 /*
86 * same as UACPI_PARSE_OP_CREATE_NAMESTRING, but attempting to create an
87 * already existing object is not fatal if currently loading a table.
88 */
90
91 /*
92 * Parse a NameString and put the node into the ready parts array.
93 * Note that this errors out if the referenced node doesn't exist.
94 */
96
97 /*
98 * Same as UACPI_PARSE_OP_EXISTING_NAMESTRING except the op doesn't error
99 * out if namestring couldn't be resolved.
100 */
102
103 /*
104 * Same as UACPI_PARSE_OP_EXISTING_NAMESTRING, but undefined references
105 * are not fatal if currently loading a table.
106 */
108
109 // Invoke a handler at op_handlers[spec->code]
111
112 // Allocate an object an put it at the front of the item list
114
116
117 // Convert last item into a shallow/deep copy of itself
120
121 /*
122 * Same as UACPI_PARSE_OP_OBJECT_ALLOC except the type of the allocated
123 * object is specified at decode_ops[pc + 1]
124 */
126
127 // Record current AML program counter as a QWORD immediate
129
130 // Load a QWORD immediate located at decode_ops[pc + 1]
132
133 // Load a decode_ops[pc + 1] byte imm at decode_ops[pc + 2]
135
136 // Load a QWORD zero immediate
138
139 // Load a decode_ops[pc + 1] byte imm from the instructions stream
141
142 // Same as UACPI_PARSE_OP_LOAD_IMM, expect the resulting value is an object
144
145 // Create & Load an integer constant representing either true or false
148
149 // Truncate the last item in the list if needed
151
152 // Ensure the type of item is decode_ops[pc + 1]
154
155 // Install the namespace node specified in items[decode_ops[pc + 1]]
157
158 // Move item to the previous (preempted) op
160
161 /*
162 * Same as UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, but the object
163 * is copied instead. (Useful when dealing with multiple targets)
164 * TODO: optimize this so that we can optionally move the object
165 * if target was a null target.
166 */
168
169 // Store the last item to the target at items[decode_ops[pc + 1]]
171
172 /*
173 * Store the item at items[decode_ops[pc + 2]] to target
174 * at items[decode_ops[pc + 1]]
175 */
177
178 /*
179 * Error if reached. Should be used for opcodes that are supposed to be
180 * converted at op parse time, e.g. invoking a method or referring to
181 * a named object.
182 */
184
185 // Invalid opcode, should never be encountered in the stream
187
188 // Decrement the current AML instruction pointer
190
191 // Decrement the immediate at decode_ops[pc + 1]
193
194 // Remove the last item off the item stack
196
197 // Dispatch the method call from items[0] and return from current op_exec
199
200 /*
201 * Dispatch a table load with scope node at items[0] and method at items[1].
202 * The last item is expected to be an integer object that is set to 0 in
203 * case load fails.
204 */
206
207 /*
208 * Convert the current resolved namestring to either a method call
209 * or a named object reference.
210 */
212
213 /*
214 * Execute the next instruction only if currently tracked package still
215 * has data left, otherwise skip decode_ops[pc + 1] bytes.
216 */
218
219 /*
220 * Execute the next instruction only if the handle at
221 * items[decode_ops[pc + 1]] is null. Otherwise skip
222 * decode_ops[pc + 2] bytes.
223 */
225
226 /*
227 * Execute the next instruction only if the handle at
228 * items[-1] is null. Otherwise skip decode_ops[pc + 1] bytes.
229 */
231
232 // The inverse of UACPI_PARSE_OP_IF_NULL
234
235 // The inverse of UACPI_PARSE_OP_IF_LAST_NULL
237
238 /*
239 * Execute the next instruction only if the last immediate is equal to
240 * decode_ops[pc + 1], otherwise skip decode_ops[pc + 2] bytes.
241 */
243
244 /*
245 * Execute the next instruction only if the last object is a false value
246 * (has a value of 0), otherwise skip decode_ops[pc + 1] bytes.
247 */
249
250 // The inverse of UACPI_PARSE_OP_IF_LAST_FALSE
252
253 /*
254 * Switch to opcode at decode_ops[pc + 1] only if the next AML instruction
255 * in the stream is equal to it. Note that this looks ahead of the tracked
256 * package if one is active. Switching to the next op also applies the
257 * currently tracked package.
258 */
260
261 /*
262 * Execute the next instruction only if this op was switched to from op at
263 * (decode_ops[pc + 1] | decode_ops[pc + 2] << 8), otherwise skip
264 * decode_ops[pc + 3] bytes.
265 */
267
268 /*
269 * pc = decode_ops[pc + 1]
270 */
273};
275
276/*
277 * A few notes about op properties:
278 * Technically the spec says that RefOfOp is considered a SuperName, but NT
279 * disagrees about this. For example Store(..., RefOf) fails with
280 * "Invalid SuperName". MethodInvocation could also technically be considered
281 * a SuperName, but NT doesn't allow that either: Store(..., MethodInvocation)
282 * fails with "Invalid Target Method, expected a DataObject" error.
283 */
284
290
291 // The ops to execute are pointed to by indirect_decode_ops
293
294 // Error if encountered in the AML byte strem
296};
297
300 union {
303 };
306};
307
309
310#define UACPI_INTERNAL_OP(code) \
311 UACPI_OP(Internal_##code, code, { UACPI_PARSE_OP_UNREACHABLE })
312
313#define UACPI_BAD_OPCODE(code) \
314 UACPI_OP(Reserved_##code, code, { UACPI_PARSE_OP_BAD_OPCODE })
315
316#define UACPI_METHOD_CALL_OPCODE(nargs) \
317 UACPI_OP( \
318 InternalOpMethodCall##nargs##Args, 0xF7 + nargs, \
319 { \
320 UACPI_PARSE_OP_LOAD_INLINE_IMM, 1, nargs, \
321 UACPI_PARSE_OP_IF_NOT_NULL, 1, 6, \
322 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
323 UACPI_PARSE_OP_OBJECT_CONVERT_TO_SHALLOW_COPY, \
324 UACPI_PARSE_OP_IMM_DECREMENT, 1, \
325 UACPI_PARSE_OP_JMP, 3, \
326 UACPI_PARSE_OP_OBJECT_ALLOC, \
327 UACPI_PARSE_OP_DISPATCH_METHOD_CALL, \
328 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
329 }, \
330 UACPI_OP_PROPERTY_TERM_ARG | \
331 UACPI_OP_PROPERTY_RESERVED \
332 )
333
334/*
335 * -------------------------------------------------------------
336 * RootChar := ‘\’
337 * ParentPrefixChar := ‘^’
338 * ‘\’ := 0x5C
339 * ‘^’ := 0x5E
340 * MultiNamePrefix := 0x2F
341 * DualNamePrefix := 0x2E
342 * ------------------------------------------------------------
343 * ‘A’-‘Z’ := 0x41 - 0x5A
344 * ‘_’ := 0x5F
345 * LeadNameChar := ‘A’-‘Z’ | ‘_’
346 * NameSeg := <leadnamechar namechar namechar namechar>
347 * NameString := <rootchar namepath> | <prefixpath namepath>
348 * PrefixPath := Nothing | <’^’ prefixpath>
349 * DualNamePath := DualNamePrefix NameSeg NameSeg
350 * MultiNamePath := MultiNamePrefix SegCount NameSeg(SegCount)
351 */
352#define UACPI_UNRESOLVED_NAME_STRING_OP(character, code) \
353 UACPI_OP( \
354 UACPI_InternalOpUnresolvedNameString_##character, code, \
355 { \
356 UACPI_PARSE_OP_AML_PC_DECREMENT, \
357 UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL, \
358 UACPI_PARSE_OP_CONVERT_NAMESTRING, \
359 }, \
360 UACPI_OP_PROPERTY_SIMPLE_NAME | \
361 UACPI_OP_PROPERTY_SUPERNAME | \
362 UACPI_OP_PROPERTY_TERM_ARG \
363 )
364
365#define UACPI_BUILD_LOCAL_OR_ARG_OP(prefix, base, offset) \
366UACPI_OP( \
367 prefix##offset##Op, base + offset, \
368 { \
369 UACPI_PARSE_OP_EMPTY_OBJECT_ALLOC, \
370 UACPI_PARSE_OP_INVOKE_HANDLER, \
371 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
372 }, \
373 UACPI_OP_PROPERTY_SUPERNAME | \
374 UACPI_OP_PROPERTY_TERM_ARG | \
375 UACPI_OP_PROPERTY_SIMPLE_NAME \
376) \
377
378#define UACPI_LOCALX_OP(idx) UACPI_BUILD_LOCAL_OR_ARG_OP(Local, 0x60, idx)
379#define UACPI_ARGX_OP(idx) UACPI_BUILD_LOCAL_OR_ARG_OP(Arg, 0x68, idx)
380
381#define UACPI_BUILD_PACKAGE_OP(name, code, jmp_off, ...) \
382UACPI_OP( \
383 name##Op, code, \
384 { \
385 UACPI_PARSE_OP_TRACKED_PKGLEN, \
386 ##__VA_ARGS__, \
387 UACPI_PARSE_OP_IF_HAS_DATA, 4, \
388 UACPI_PARSE_OP_RECORD_AML_PC, \
389 UACPI_PARSE_OP_TERM_ARG_OR_NAMED_OBJECT_OR_UNRESOLVED, \
390 UACPI_PARSE_OP_JMP, jmp_off, \
391 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_PACKAGE, \
392 UACPI_PARSE_OP_INVOKE_HANDLER, \
393 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
394 }, \
395 UACPI_OP_PROPERTY_TERM_ARG \
396)
397
398#define UACPI_BUILD_BINARY_MATH_OP(prefix, code) \
399UACPI_OP( \
400 prefix##Op, code, \
401 { \
402 UACPI_PARSE_OP_OPERAND, \
403 UACPI_PARSE_OP_OPERAND, \
404 UACPI_PARSE_OP_TARGET, \
405 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
406 UACPI_PARSE_OP_INVOKE_HANDLER, \
407 UACPI_PARSE_OP_TRUNCATE_NUMBER, \
408 UACPI_PARSE_OP_STORE_TO_TARGET, 2, \
409 UACPI_PARSE_OP_OBJECT_COPY_TO_PREV, \
410 }, \
411 UACPI_OP_PROPERTY_TERM_ARG \
412)
413
414#define UACPI_BUILD_UNARY_MATH_OP(type, code) \
415UACPI_OP( \
416 type##Op, code, \
417 { \
418 UACPI_PARSE_OP_OPERAND, \
419 UACPI_PARSE_OP_TARGET, \
420 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
421 UACPI_PARSE_OP_INVOKE_HANDLER, \
422 UACPI_PARSE_OP_STORE_TO_TARGET, 1, \
423 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
424 }, \
425 UACPI_OP_PROPERTY_TERM_ARG \
426)
427
428#define UACPI_DO_BUILD_BUFFER_FIELD_OP(type, code, node_idx, ...) \
429UACPI_OP( \
430 type##FieldOp, code, \
431 { \
432 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
433 UACPI_PARSE_OP_TYPECHECK, UACPI_OBJECT_BUFFER, \
434 UACPI_PARSE_OP_OPERAND, \
435 ##__VA_ARGS__, \
436 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
437 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, node_idx, \
438 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_BUFFER_FIELD, \
439 UACPI_PARSE_OP_INVOKE_HANDLER, \
440 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, node_idx, \
441 } \
442)
443
444#define UACPI_BUILD_BUFFER_FIELD_OP(type, code) \
445 UACPI_DO_BUILD_BUFFER_FIELD_OP(Create##type, code, 2)
446
447#define UACPI_INTEGER_LITERAL_OP(type, code, bytes) \
448UACPI_OP( \
449 type##Prefix, code, \
450 { \
451 UACPI_PARSE_OP_LOAD_IMM_AS_OBJECT, bytes, \
452 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
453 }, \
454 UACPI_OP_PROPERTY_TERM_ARG \
455) \
456
457#define UACPI_BUILD_BINARY_LOGIC_OP(type, code) \
458UACPI_OP( \
459 type##Op, code, \
460 { \
461 UACPI_PARSE_OP_COMPUTATIONAL_DATA, \
462 UACPI_PARSE_OP_COMPUTATIONAL_DATA, \
463 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
464 UACPI_PARSE_OP_INVOKE_HANDLER, \
465 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
466 }, \
467 UACPI_OP_PROPERTY_TERM_ARG \
468)
469
470#define UACPI_BUILD_TO_OP(kind, code, dst_type) \
471UACPI_OP( \
472 To##kind##Op, code, \
473 { \
474 UACPI_PARSE_OP_COMPUTATIONAL_DATA, \
475 UACPI_PARSE_OP_TARGET, \
476 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, dst_type, \
477 UACPI_PARSE_OP_INVOKE_HANDLER, \
478 UACPI_PARSE_OP_STORE_TO_TARGET, 1, \
479 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
480 }, \
481 UACPI_OP_PROPERTY_TERM_ARG \
482)
483
484#define UACPI_BUILD_INC_DEC_OP(prefix, code) \
485UACPI_OP( \
486 prefix##Op, code, \
487 { \
488 UACPI_PARSE_OP_SUPERNAME, \
489 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
490 UACPI_PARSE_OP_INVOKE_HANDLER, \
491 UACPI_PARSE_OP_TRUNCATE_NUMBER, \
492 UACPI_PARSE_OP_STORE_TO_TARGET, 0, \
493 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
494 }, \
495 UACPI_OP_PROPERTY_TERM_ARG \
496) \
497
498#define UACPI_ENUMERATE_OPCODES \
499UACPI_OP( \
500 ZeroOp, 0x00, \
501 { \
502 UACPI_PARSE_OP_LOAD_INLINE_IMM_AS_OBJECT, \
503 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
504 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
505 }, \
506 UACPI_OP_PROPERTY_TARGET | \
507 UACPI_OP_PROPERTY_TERM_ARG \
508) \
509UACPI_OP( \
510 OneOp, 0x01, \
511 { \
512 UACPI_PARSE_OP_LOAD_INLINE_IMM_AS_OBJECT, \
513 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
514 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
515 }, \
516 UACPI_OP_PROPERTY_TERM_ARG \
517) \
518UACPI_BAD_OPCODE(0x02) \
519UACPI_BAD_OPCODE(0x03) \
520UACPI_BAD_OPCODE(0x04) \
521UACPI_BAD_OPCODE(0x05) \
522UACPI_OP( \
523 AliasOp, 0x06, \
524 { \
525 UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL_IF_LOAD, \
526 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
527 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
528 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 1, \
529 UACPI_PARSE_OP_INVOKE_HANDLER, \
530 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 1, \
531 } \
532) \
533UACPI_BAD_OPCODE(0x07) \
534UACPI_OP( \
535 NameOp, 0x08, \
536 { \
537 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
538 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
539 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
540 UACPI_PARSE_OP_OBJECT_CONVERT_TO_DEEP_COPY, \
541 UACPI_PARSE_OP_INVOKE_HANDLER, \
542 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 0, \
543 } \
544) \
545UACPI_BAD_OPCODE(0x09) \
546UACPI_INTEGER_LITERAL_OP(Byte, 0x0A, 1) \
547UACPI_INTEGER_LITERAL_OP(Word, 0x0B, 2) \
548UACPI_INTEGER_LITERAL_OP(DWord, 0x0C, 4) \
549UACPI_OP( \
550 StringPrefix, 0x0D, \
551 { \
552 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_STRING, \
553 UACPI_PARSE_OP_INVOKE_HANDLER, \
554 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
555 }, \
556 UACPI_OP_PROPERTY_TERM_ARG \
557) \
558UACPI_INTEGER_LITERAL_OP(QWord, 0x0E, 8) \
559UACPI_BAD_OPCODE(0x0F) \
560UACPI_OP( \
561 ScopeOp, 0x10, \
562 { \
563 UACPI_PARSE_OP_TRACKED_PKGLEN, \
564 UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL_IF_LOAD, \
565 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 1, \
566 UACPI_PARSE_OP_INVOKE_HANDLER, \
567 } \
568) \
569UACPI_OP( \
570 BufferOp, 0x11, \
571 { \
572 UACPI_PARSE_OP_TRACKED_PKGLEN, \
573 UACPI_PARSE_OP_OPERAND, \
574 UACPI_PARSE_OP_RECORD_AML_PC, \
575 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_BUFFER, \
576 UACPI_PARSE_OP_INVOKE_HANDLER, \
577 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
578 }, \
579 UACPI_OP_PROPERTY_TERM_ARG \
580) \
581UACPI_BUILD_PACKAGE_OP( \
582 Package, 0x12, 3, \
583 UACPI_PARSE_OP_LOAD_IMM, 1 \
584) \
585UACPI_BUILD_PACKAGE_OP( \
586 VarPackage, 0x13, 2, \
587 UACPI_PARSE_OP_OPERAND \
588) \
589UACPI_OP( \
590 MethodOp, 0x14, \
591 { \
592 UACPI_PARSE_OP_TRACKED_PKGLEN, \
593 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
594 UACPI_PARSE_OP_LOAD_IMM, 1, \
595 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 1, \
596 UACPI_PARSE_OP_RECORD_AML_PC, \
597 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_METHOD, \
598 UACPI_PARSE_OP_INVOKE_HANDLER, \
599 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 1, \
600 } \
601) \
602UACPI_OP( \
603 ExternalOp, 0x15, \
604 { \
605 UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL, \
606 UACPI_PARSE_OP_LOAD_IMM, 1, \
607 UACPI_PARSE_OP_LOAD_IMM, 1, \
608 } \
609) \
610UACPI_BAD_OPCODE(0x16) \
611UACPI_BAD_OPCODE(0x17) \
612UACPI_BAD_OPCODE(0x18) \
613UACPI_BAD_OPCODE(0x19) \
614UACPI_BAD_OPCODE(0x1A) \
615UACPI_BAD_OPCODE(0x1B) \
616UACPI_BAD_OPCODE(0x1C) \
617UACPI_BAD_OPCODE(0x1D) \
618UACPI_BAD_OPCODE(0x1E) \
619UACPI_BAD_OPCODE(0x1F) \
620UACPI_BAD_OPCODE(0x20) \
621UACPI_BAD_OPCODE(0x21) \
622UACPI_BAD_OPCODE(0x22) \
623UACPI_BAD_OPCODE(0x23) \
624UACPI_BAD_OPCODE(0x24) \
625UACPI_BAD_OPCODE(0x25) \
626UACPI_BAD_OPCODE(0x26) \
627UACPI_BAD_OPCODE(0x27) \
628UACPI_BAD_OPCODE(0x28) \
629UACPI_BAD_OPCODE(0x29) \
630UACPI_BAD_OPCODE(0x2A) \
631UACPI_BAD_OPCODE(0x2B) \
632UACPI_BAD_OPCODE(0x2C) \
633UACPI_BAD_OPCODE(0x2D) \
634UACPI_UNRESOLVED_NAME_STRING_OP(DualNamePrefix, 0x2E) \
635UACPI_UNRESOLVED_NAME_STRING_OP(MultiNamePrefix, 0x2F) \
636UACPI_INTERNAL_OP(0x30) \
637UACPI_INTERNAL_OP(0x31) \
638UACPI_INTERNAL_OP(0x32) \
639UACPI_INTERNAL_OP(0x33) \
640UACPI_INTERNAL_OP(0x34) \
641UACPI_INTERNAL_OP(0x35) \
642UACPI_INTERNAL_OP(0x36) \
643UACPI_INTERNAL_OP(0x37) \
644UACPI_INTERNAL_OP(0x38) \
645UACPI_INTERNAL_OP(0x39) \
646UACPI_BAD_OPCODE(0x3A) \
647UACPI_BAD_OPCODE(0x3B) \
648UACPI_BAD_OPCODE(0x3C) \
649UACPI_BAD_OPCODE(0x3D) \
650UACPI_BAD_OPCODE(0x3E) \
651UACPI_BAD_OPCODE(0x3F) \
652UACPI_BAD_OPCODE(0x40) \
653UACPI_UNRESOLVED_NAME_STRING_OP(A, 0x41) \
654UACPI_UNRESOLVED_NAME_STRING_OP(B, 0x42) \
655UACPI_UNRESOLVED_NAME_STRING_OP(C, 0x43) \
656UACPI_UNRESOLVED_NAME_STRING_OP(D, 0x44) \
657UACPI_UNRESOLVED_NAME_STRING_OP(E, 0x45) \
658UACPI_UNRESOLVED_NAME_STRING_OP(F, 0x46) \
659UACPI_UNRESOLVED_NAME_STRING_OP(G, 0x47) \
660UACPI_UNRESOLVED_NAME_STRING_OP(H, 0x48) \
661UACPI_UNRESOLVED_NAME_STRING_OP(I, 0x49) \
662UACPI_UNRESOLVED_NAME_STRING_OP(J, 0x4A) \
663UACPI_UNRESOLVED_NAME_STRING_OP(K, 0x4B) \
664UACPI_UNRESOLVED_NAME_STRING_OP(L, 0x4C) \
665UACPI_UNRESOLVED_NAME_STRING_OP(M, 0x4D) \
666UACPI_UNRESOLVED_NAME_STRING_OP(N, 0x4E) \
667UACPI_UNRESOLVED_NAME_STRING_OP(O, 0x4F) \
668UACPI_UNRESOLVED_NAME_STRING_OP(P, 0x50) \
669UACPI_UNRESOLVED_NAME_STRING_OP(Q, 0x51) \
670UACPI_UNRESOLVED_NAME_STRING_OP(R, 0x52) \
671UACPI_UNRESOLVED_NAME_STRING_OP(S, 0x53) \
672UACPI_UNRESOLVED_NAME_STRING_OP(T, 0x54) \
673UACPI_UNRESOLVED_NAME_STRING_OP(U, 0x55) \
674UACPI_UNRESOLVED_NAME_STRING_OP(V, 0x56) \
675UACPI_UNRESOLVED_NAME_STRING_OP(W, 0x57) \
676UACPI_UNRESOLVED_NAME_STRING_OP(X, 0x58) \
677UACPI_UNRESOLVED_NAME_STRING_OP(Y, 0x59) \
678UACPI_UNRESOLVED_NAME_STRING_OP(Z, 0x5A) \
679UACPI_INTERNAL_OP(0x5B) \
680UACPI_UNRESOLVED_NAME_STRING_OP(RootChar, 0x5C) \
681UACPI_BAD_OPCODE(0x5D) \
682UACPI_UNRESOLVED_NAME_STRING_OP(ParentPrefixChar, 0x5E) \
683UACPI_UNRESOLVED_NAME_STRING_OP(Underscore, 0x5F) \
684UACPI_LOCALX_OP(0) \
685UACPI_LOCALX_OP(1) \
686UACPI_LOCALX_OP(2) \
687UACPI_LOCALX_OP(3) \
688UACPI_LOCALX_OP(4) \
689UACPI_LOCALX_OP(5) \
690UACPI_LOCALX_OP(6) \
691UACPI_LOCALX_OP(7) \
692UACPI_ARGX_OP(0) \
693UACPI_ARGX_OP(1) \
694UACPI_ARGX_OP(2) \
695UACPI_ARGX_OP(3) \
696UACPI_ARGX_OP(4) \
697UACPI_ARGX_OP(5) \
698UACPI_ARGX_OP(6) \
699UACPI_BAD_OPCODE(0x6F) \
700UACPI_OP( \
701 StoreOp, 0x70, \
702 { \
703 UACPI_PARSE_OP_TERM_ARG, \
704 UACPI_PARSE_OP_SUPERNAME, \
705 UACPI_PARSE_OP_INVOKE_HANDLER, \
706 UACPI_PARSE_OP_ITEM_POP, \
707 UACPI_PARSE_OP_OBJECT_COPY_TO_PREV, \
708 }, \
709 UACPI_OP_PROPERTY_TERM_ARG \
710) \
711UACPI_OP( \
712 RefOfOp, 0x71, \
713 { \
714 UACPI_PARSE_OP_SUPERNAME, \
715 UACPI_PARSE_OP_OBJECT_ALLOC, \
716 UACPI_PARSE_OP_INVOKE_HANDLER, \
717 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
718 }, \
719 UACPI_OP_PROPERTY_TERM_ARG \
720) \
721UACPI_BUILD_BINARY_MATH_OP(Add, 0x72) \
722UACPI_OP( \
723 ConcatOp, 0x73, \
724 { \
725 UACPI_PARSE_OP_COMPUTATIONAL_DATA, \
726 UACPI_PARSE_OP_COMPUTATIONAL_DATA, \
727 UACPI_PARSE_OP_TARGET, \
728 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_BUFFER, \
729 UACPI_PARSE_OP_INVOKE_HANDLER, \
730 UACPI_PARSE_OP_STORE_TO_TARGET, 2, \
731 UACPI_PARSE_OP_OBJECT_COPY_TO_PREV, \
732 }, \
733 UACPI_OP_PROPERTY_TERM_ARG \
734) \
735UACPI_BUILD_BINARY_MATH_OP(Subtract, 0x74) \
736UACPI_BUILD_INC_DEC_OP(Increment, 0x75) \
737UACPI_BUILD_INC_DEC_OP(Decrement, 0x76) \
738UACPI_BUILD_BINARY_MATH_OP(Multiply, 0x77) \
739UACPI_OP( \
740 DivideOp, 0x78, \
741 { \
742 UACPI_PARSE_OP_OPERAND, \
743 UACPI_PARSE_OP_OPERAND, \
744 UACPI_PARSE_OP_TARGET, \
745 UACPI_PARSE_OP_TARGET, \
746 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
747 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
748 UACPI_PARSE_OP_INVOKE_HANDLER, \
749 UACPI_PARSE_OP_STORE_TO_TARGET, 3, \
750 UACPI_PARSE_OP_OBJECT_COPY_TO_PREV, \
751 UACPI_PARSE_OP_STORE_TO_TARGET_INDIRECT, 2, 4, \
752 }, \
753 UACPI_OP_PROPERTY_TERM_ARG \
754) \
755UACPI_BUILD_BINARY_MATH_OP(ShiftLeft, 0x79) \
756UACPI_BUILD_BINARY_MATH_OP(ShiftRight, 0x7A) \
757UACPI_BUILD_BINARY_MATH_OP(And, 0x7B) \
758UACPI_BUILD_BINARY_MATH_OP(Nand, 0x7C) \
759UACPI_BUILD_BINARY_MATH_OP(Or, 0x7D) \
760UACPI_BUILD_BINARY_MATH_OP(Nor, 0x7E) \
761UACPI_BUILD_BINARY_MATH_OP(Xor, 0x7F) \
762UACPI_BUILD_UNARY_MATH_OP(Not, 0x80) \
763UACPI_BUILD_UNARY_MATH_OP(FindSetLeftBit, 0x81) \
764UACPI_BUILD_UNARY_MATH_OP(FindSetRightBit, 0x82) \
765UACPI_OP( \
766 DerefOfOp, 0x83, \
767 { \
768 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
769 UACPI_PARSE_OP_OBJECT_ALLOC, \
770 UACPI_PARSE_OP_INVOKE_HANDLER, \
771 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
772 }, \
773 UACPI_OP_PROPERTY_TERM_ARG \
774) \
775UACPI_OP( \
776 ConcatResOp, 0x84, \
777 { \
778 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
779 UACPI_PARSE_OP_TYPECHECK, UACPI_OBJECT_BUFFER, \
780 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
781 UACPI_PARSE_OP_TYPECHECK, UACPI_OBJECT_BUFFER, \
782 UACPI_PARSE_OP_TARGET, \
783 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_BUFFER, \
784 UACPI_PARSE_OP_INVOKE_HANDLER, \
785 UACPI_PARSE_OP_STORE_TO_TARGET, 2, \
786 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
787 }, \
788 UACPI_OP_PROPERTY_TERM_ARG \
789) \
790UACPI_BUILD_BINARY_MATH_OP(Mod, 0x85) \
791UACPI_OP( \
792 NotifyOp, 0x86, \
793 { \
794 /* This is technically wrong according to spec but I was */ \
795 /* unable to find any examples of anything else after */ \
796 /* inspecting about 500 AML dumps. Spec says this is a */ \
797 /* SuperName that must evaluate to Device/ThermalZone or */ \
798 /* Processor, just ignore for now. */ \
799 UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL_IF_LOAD, \
800 UACPI_PARSE_OP_OPERAND, \
801 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
802 UACPI_PARSE_OP_INVOKE_HANDLER, \
803 } \
804) \
805UACPI_OP( \
806 SizeOfOp, 0x87, \
807 { \
808 UACPI_PARSE_OP_SUPERNAME, \
809 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
810 UACPI_PARSE_OP_INVOKE_HANDLER, \
811 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
812 }, \
813 UACPI_OP_PROPERTY_TERM_ARG \
814) \
815UACPI_OP( \
816 IndexOp, 0x88, \
817 { \
818 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
819 UACPI_PARSE_OP_OPERAND, \
820 UACPI_PARSE_OP_TARGET, \
821 UACPI_PARSE_OP_EMPTY_OBJECT_ALLOC, \
822 UACPI_PARSE_OP_INVOKE_HANDLER, \
823 UACPI_PARSE_OP_STORE_TO_TARGET, 2, \
824 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
825 }, \
826 UACPI_OP_PROPERTY_TERM_ARG | \
827 UACPI_OP_PROPERTY_SUPERNAME | \
828 UACPI_OP_PROPERTY_SIMPLE_NAME \
829) \
830UACPI_OP( \
831 MatchOp, 0x89, \
832 { \
833 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
834 UACPI_PARSE_OP_TYPECHECK, UACPI_OBJECT_PACKAGE, \
835 UACPI_PARSE_OP_LOAD_IMM, 1, \
836 UACPI_PARSE_OP_OPERAND, \
837 UACPI_PARSE_OP_LOAD_IMM, 1, \
838 UACPI_PARSE_OP_OPERAND, \
839 UACPI_PARSE_OP_OPERAND, \
840 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
841 UACPI_PARSE_OP_INVOKE_HANDLER, \
842 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
843 }, \
844 UACPI_OP_PROPERTY_TERM_ARG \
845) \
846UACPI_BUILD_BUFFER_FIELD_OP(DWord, 0x8A) \
847UACPI_BUILD_BUFFER_FIELD_OP(Word, 0x8B) \
848UACPI_BUILD_BUFFER_FIELD_OP(Byte, 0x8C) \
849UACPI_BUILD_BUFFER_FIELD_OP(Bit, 0x8D) \
850UACPI_OP( \
851 ObjectTypeOp, 0x8E, \
852 { \
853 UACPI_PARSE_OP_TERM_ARG_OR_NAMED_OBJECT, \
854 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
855 UACPI_PARSE_OP_INVOKE_HANDLER, \
856 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
857 }, \
858 UACPI_OP_PROPERTY_TERM_ARG \
859) \
860UACPI_BUILD_BUFFER_FIELD_OP(QWord, 0x8F) \
861UACPI_BUILD_BINARY_LOGIC_OP(Land, 0x90) \
862UACPI_BUILD_BINARY_LOGIC_OP(Lor, 0x91) \
863UACPI_OP( \
864 LnotOp, 0x92, \
865 { \
866 UACPI_PARSE_OP_OPERAND, \
867 UACPI_PARSE_OP_OBJECT_ALLOC, \
868 UACPI_PARSE_OP_INVOKE_HANDLER, \
869 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
870 }, \
871 UACPI_OP_PROPERTY_TERM_ARG \
872) \
873UACPI_BUILD_BINARY_LOGIC_OP(LEqual, 0x93) \
874UACPI_BUILD_BINARY_LOGIC_OP(LGreater, 0x94) \
875UACPI_BUILD_BINARY_LOGIC_OP(LLess, 0x95) \
876UACPI_BUILD_TO_OP(Buffer, 0x96, UACPI_OBJECT_BUFFER) \
877UACPI_BUILD_TO_OP(DecimalString, 0x97, UACPI_OBJECT_STRING) \
878UACPI_BUILD_TO_OP(HexString, 0x98, UACPI_OBJECT_STRING) \
879UACPI_BUILD_TO_OP(Integer, 0x99, UACPI_OBJECT_INTEGER) \
880UACPI_BAD_OPCODE(0x9A) \
881UACPI_BAD_OPCODE(0x9B) \
882UACPI_OP( \
883 ToStringOp, 0x9C, \
884 { \
885 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
886 UACPI_PARSE_OP_TYPECHECK, UACPI_OBJECT_BUFFER, \
887 UACPI_PARSE_OP_OPERAND, \
888 UACPI_PARSE_OP_TARGET, \
889 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_STRING, \
890 UACPI_PARSE_OP_INVOKE_HANDLER, \
891 UACPI_PARSE_OP_STORE_TO_TARGET, 2, \
892 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
893 }, \
894 UACPI_OP_PROPERTY_TERM_ARG \
895) \
896UACPI_OP( \
897 CopyObjectOp, 0x9D, \
898 { \
899 UACPI_PARSE_OP_TERM_ARG, \
900 UACPI_PARSE_OP_OBJECT_COPY_TO_PREV, \
901 UACPI_PARSE_OP_SIMPLE_NAME, \
902 UACPI_PARSE_OP_INVOKE_HANDLER, \
903 }, \
904 UACPI_OP_PROPERTY_TERM_ARG \
905) \
906UACPI_OP( \
907 MidOp, 0x9E, \
908 { \
909 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
910 UACPI_PARSE_OP_OPERAND, \
911 UACPI_PARSE_OP_OPERAND, \
912 UACPI_PARSE_OP_TARGET, \
913 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_BUFFER, \
914 UACPI_PARSE_OP_INVOKE_HANDLER, \
915 UACPI_PARSE_OP_STORE_TO_TARGET, 3, \
916 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
917 }, \
918 UACPI_OP_PROPERTY_TERM_ARG \
919) \
920UACPI_OP( \
921 ContinueOp, 0x9F, \
922 { \
923 UACPI_PARSE_OP_INVOKE_HANDLER, \
924 } \
925) \
926UACPI_OP( \
927 IfOp, 0xA0, \
928 { \
929 UACPI_PARSE_OP_TRACKED_PKGLEN, \
930 UACPI_PARSE_OP_OPERAND, \
931 UACPI_PARSE_OP_IF_LAST_NULL, 3, \
932 UACPI_PARSE_OP_EMIT_SKIP_WARN, \
933 UACPI_PARSE_OP_JMP, 9, \
934 UACPI_PARSE_OP_IF_LAST_FALSE, 4, \
935 UACPI_PARSE_OP_SWITCH_TO_NEXT_IF_EQUALS, 0xA1, 0x00, \
936 UACPI_PARSE_OP_END, \
937 UACPI_PARSE_OP_INVOKE_HANDLER, \
938 } \
939) \
940UACPI_OP( \
941 ElseOp, 0xA1, \
942 { \
943 UACPI_PARSE_OP_IF_SWITCHED_FROM, 0xA0, 0x00, 10, \
944 UACPI_PARSE_OP_IF_LAST_NULL, 3, \
945 UACPI_PARSE_OP_TRACKED_PKGLEN, \
946 UACPI_PARSE_OP_EMIT_SKIP_WARN, \
947 UACPI_PARSE_OP_END, \
948 UACPI_PARSE_OP_ITEM_POP, \
949 UACPI_PARSE_OP_ITEM_POP, \
950 UACPI_PARSE_OP_PKGLEN, \
951 UACPI_PARSE_OP_INVOKE_HANDLER, \
952 UACPI_PARSE_OP_END, \
953 UACPI_PARSE_OP_TRACKED_PKGLEN, \
954 } \
955) \
956UACPI_OP( \
957 WhileOp, 0xA2, \
958 { \
959 UACPI_PARSE_OP_TRACKED_PKGLEN, \
960 UACPI_PARSE_OP_OPERAND, \
961 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 1, \
962 UACPI_PARSE_OP_IF_LAST_TRUE, 1, \
963 UACPI_PARSE_OP_INVOKE_HANDLER, \
964 } \
965) \
966UACPI_OP( \
967 NoopOp, 0xA3, \
968 { \
969 UACPI_PARSE_OP_END, \
970 } \
971) \
972UACPI_OP( \
973 ReturnOp, 0xA4, \
974 { \
975 UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL, \
976 UACPI_PARSE_OP_INVOKE_HANDLER, \
977 } \
978) \
979UACPI_OP( \
980 BreakOp, 0xA5, \
981 { \
982 UACPI_PARSE_OP_INVOKE_HANDLER, \
983 } \
984) \
985UACPI_BAD_OPCODE(0xA6) \
986UACPI_BAD_OPCODE(0xA7) \
987UACPI_BAD_OPCODE(0xA8) \
988UACPI_BAD_OPCODE(0xA9) \
989UACPI_BAD_OPCODE(0xAA) \
990UACPI_BAD_OPCODE(0xAB) \
991UACPI_BAD_OPCODE(0xAC) \
992UACPI_BAD_OPCODE(0xAD) \
993UACPI_BAD_OPCODE(0xAE) \
994UACPI_BAD_OPCODE(0xAF) \
995UACPI_BAD_OPCODE(0xB0) \
996UACPI_BAD_OPCODE(0xB1) \
997UACPI_BAD_OPCODE(0xB2) \
998UACPI_BAD_OPCODE(0xB3) \
999UACPI_BAD_OPCODE(0xB4) \
1000UACPI_BAD_OPCODE(0xB5) \
1001UACPI_BAD_OPCODE(0xB6) \
1002UACPI_BAD_OPCODE(0xB7) \
1003UACPI_BAD_OPCODE(0xB8) \
1004UACPI_BAD_OPCODE(0xB9) \
1005UACPI_BAD_OPCODE(0xBA) \
1006UACPI_BAD_OPCODE(0xBB) \
1007UACPI_BAD_OPCODE(0xBC) \
1008UACPI_BAD_OPCODE(0xBD) \
1009UACPI_BAD_OPCODE(0xBE) \
1010UACPI_BAD_OPCODE(0xBF) \
1011UACPI_BAD_OPCODE(0xC0) \
1012UACPI_BAD_OPCODE(0xC1) \
1013UACPI_BAD_OPCODE(0xC2) \
1014UACPI_BAD_OPCODE(0xC3) \
1015UACPI_BAD_OPCODE(0xC4) \
1016UACPI_BAD_OPCODE(0xC5) \
1017UACPI_BAD_OPCODE(0xC6) \
1018UACPI_BAD_OPCODE(0xC7) \
1019UACPI_BAD_OPCODE(0xC8) \
1020UACPI_BAD_OPCODE(0xC9) \
1021UACPI_BAD_OPCODE(0xCA) \
1022UACPI_BAD_OPCODE(0xCB) \
1023UACPI_OP( \
1024 BreakPointOp, 0xCC, \
1025 { \
1026 UACPI_PARSE_OP_INVOKE_HANDLER, \
1027 } \
1028) \
1029UACPI_BAD_OPCODE(0xCD) \
1030UACPI_BAD_OPCODE(0xCE) \
1031UACPI_BAD_OPCODE(0xCF) \
1032UACPI_BAD_OPCODE(0xD0) \
1033UACPI_BAD_OPCODE(0xD1) \
1034UACPI_BAD_OPCODE(0xD2) \
1035UACPI_BAD_OPCODE(0xD3) \
1036UACPI_BAD_OPCODE(0xD4) \
1037UACPI_BAD_OPCODE(0xD5) \
1038UACPI_BAD_OPCODE(0xD6) \
1039UACPI_BAD_OPCODE(0xD7) \
1040UACPI_BAD_OPCODE(0xD8) \
1041UACPI_BAD_OPCODE(0xD9) \
1042UACPI_BAD_OPCODE(0xDA) \
1043UACPI_BAD_OPCODE(0xDB) \
1044UACPI_BAD_OPCODE(0xDC) \
1045UACPI_BAD_OPCODE(0xDD) \
1046UACPI_BAD_OPCODE(0xDE) \
1047UACPI_BAD_OPCODE(0xDF) \
1048UACPI_BAD_OPCODE(0xE0) \
1049UACPI_BAD_OPCODE(0xE1) \
1050UACPI_BAD_OPCODE(0xE2) \
1051UACPI_BAD_OPCODE(0xE3) \
1052UACPI_BAD_OPCODE(0xE4) \
1053UACPI_BAD_OPCODE(0xE5) \
1054UACPI_BAD_OPCODE(0xE6) \
1055UACPI_BAD_OPCODE(0xE7) \
1056UACPI_BAD_OPCODE(0xE8) \
1057UACPI_BAD_OPCODE(0xE9) \
1058UACPI_BAD_OPCODE(0xEA) \
1059UACPI_BAD_OPCODE(0xEB) \
1060UACPI_BAD_OPCODE(0xEC) \
1061UACPI_BAD_OPCODE(0xED) \
1062UACPI_BAD_OPCODE(0xEE) \
1063UACPI_BAD_OPCODE(0xEF) \
1064UACPI_BAD_OPCODE(0xF0) \
1065UACPI_BAD_OPCODE(0xF1) \
1066UACPI_BAD_OPCODE(0xF2) \
1067UACPI_BAD_OPCODE(0xF3) \
1068UACPI_OP( \
1069 InternalOpReadFieldAsBuffer, 0xF4, \
1070 { \
1071 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_BUFFER, \
1072 UACPI_PARSE_OP_INVOKE_HANDLER, \
1073 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1074 }, \
1075 UACPI_OP_PROPERTY_TERM_ARG | \
1076 UACPI_OP_PROPERTY_RESERVED \
1077) \
1078UACPI_OP( \
1079 InternalOpReadFieldAsInteger, 0xF5, \
1080 { \
1081 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, UACPI_OBJECT_INTEGER, \
1082 UACPI_PARSE_OP_INVOKE_HANDLER, \
1083 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1084 }, \
1085 UACPI_OP_PROPERTY_TERM_ARG | \
1086 UACPI_OP_PROPERTY_RESERVED \
1087) \
1088UACPI_OP( \
1089 InternalOpNamedObject, 0xF6, \
1090 { \
1091 UACPI_PARSE_OP_EMPTY_OBJECT_ALLOC, \
1092 UACPI_PARSE_OP_INVOKE_HANDLER, \
1093 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1094 }, \
1095 UACPI_OP_PROPERTY_SIMPLE_NAME | \
1096 UACPI_OP_PROPERTY_SUPERNAME | \
1097 UACPI_OP_PROPERTY_TERM_ARG | \
1098 UACPI_OP_PROPERTY_RESERVED \
1099) \
1100UACPI_METHOD_CALL_OPCODE(0) \
1101UACPI_METHOD_CALL_OPCODE(1) \
1102UACPI_METHOD_CALL_OPCODE(2) \
1103UACPI_METHOD_CALL_OPCODE(3) \
1104UACPI_METHOD_CALL_OPCODE(4) \
1105UACPI_METHOD_CALL_OPCODE(5) \
1106UACPI_METHOD_CALL_OPCODE(6) \
1107UACPI_METHOD_CALL_OPCODE(7) \
1108UACPI_OP( \
1109 OnesOp, 0xFF, \
1110 { \
1111 UACPI_PARSE_OP_LOAD_INLINE_IMM_AS_OBJECT, \
1112 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
1113 UACPI_PARSE_OP_TRUNCATE_NUMBER, \
1114 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1115 }, \
1116 UACPI_OP_PROPERTY_TERM_ARG \
1117)
1118
1124
1125#define UACPI_BUILD_NAMED_SCOPE_OBJECT_OP(name, code, type, ...) \
1126UACPI_OP( \
1127 name##Op, UACPI_EXT_OP(code), \
1128 { \
1129 UACPI_PARSE_OP_TRACKED_PKGLEN, \
1130 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
1131 ##__VA_ARGS__, \
1132 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 1, \
1133 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, type, \
1134 UACPI_PARSE_OP_INVOKE_HANDLER, \
1135 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 1, \
1136 } \
1137)
1138
1139#define UACPI_BUILD_TO_FROM_BCD(type, code) \
1140UACPI_OP( \
1141 type##BCDOp, UACPI_EXT_OP(code), \
1142 { \
1143 UACPI_PARSE_OP_OPERAND, \
1144 UACPI_PARSE_OP_TARGET, \
1145 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1146 UACPI_OBJECT_INTEGER, \
1147 UACPI_PARSE_OP_INVOKE_HANDLER, \
1148 UACPI_PARSE_OP_STORE_TO_TARGET, 1, \
1149 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1150 }, \
1151 UACPI_OP_PROPERTY_TERM_ARG \
1152)
1153
1154#define UACPI_ENUMERATE_EXT_OPCODES \
1155UACPI_OP( \
1156 ReservedExtOp, UACPI_EXT_OP(0x00), \
1157 { \
1158 UACPI_PARSE_OP_BAD_OPCODE, \
1159 } \
1160) \
1161UACPI_OP( \
1162 MutexOp, UACPI_EXT_OP(0x01), \
1163 { \
1164 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
1165 UACPI_PARSE_OP_LOAD_IMM, 1, \
1166 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
1167 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1168 UACPI_OBJECT_MUTEX, \
1169 UACPI_PARSE_OP_INVOKE_HANDLER, \
1170 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 0, \
1171 } \
1172) \
1173UACPI_OP( \
1174 EventOp, UACPI_EXT_OP(0x02), \
1175 { \
1176 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
1177 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
1178 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1179 UACPI_OBJECT_EVENT, \
1180 UACPI_PARSE_OP_INVOKE_HANDLER, \
1181 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 0, \
1182 } \
1183) \
1184UACPI_OP( \
1185 CondRefOfOp, UACPI_EXT_OP(0x12), \
1186 { \
1187 UACPI_PARSE_OP_SUPERNAME_OR_UNRESOLVED, \
1188 UACPI_PARSE_OP_TARGET, \
1189 UACPI_PARSE_OP_IF_NULL, 0, 3, \
1190 UACPI_PARSE_OP_LOAD_FALSE_OBJECT, \
1191 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1192 UACPI_PARSE_OP_END, \
1193 UACPI_PARSE_OP_OBJECT_ALLOC, \
1194 UACPI_PARSE_OP_INVOKE_HANDLER, \
1195 UACPI_PARSE_OP_STORE_TO_TARGET, 1, \
1196 UACPI_PARSE_OP_LOAD_TRUE_OBJECT, \
1197 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1198 }, \
1199 UACPI_OP_PROPERTY_TERM_ARG \
1200) \
1201UACPI_DO_BUILD_BUFFER_FIELD_OP( \
1202 Create, UACPI_EXT_OP(0x13), 3, \
1203 UACPI_PARSE_OP_OPERAND \
1204) \
1205UACPI_OUT_OF_LINE_OP( \
1206 LoadTableOp, UACPI_EXT_OP(0x1F), \
1207 uacpi_load_table_op_decode_ops, \
1208 UACPI_OP_PROPERTY_TERM_ARG | \
1209 UACPI_OP_PROPERTY_OUT_OF_LINE \
1210) \
1211UACPI_OUT_OF_LINE_OP( \
1212 LoadOp, UACPI_EXT_OP(0x20), \
1213 uacpi_load_op_decode_ops, \
1214 UACPI_OP_PROPERTY_TERM_ARG | \
1215 UACPI_OP_PROPERTY_OUT_OF_LINE \
1216) \
1217UACPI_OP( \
1218 StallOp, UACPI_EXT_OP(0x21), \
1219 { \
1220 UACPI_PARSE_OP_OPERAND, \
1221 UACPI_PARSE_OP_INVOKE_HANDLER, \
1222 } \
1223) \
1224UACPI_OP( \
1225 SleepOp, UACPI_EXT_OP(0x22), \
1226 { \
1227 UACPI_PARSE_OP_OPERAND, \
1228 UACPI_PARSE_OP_INVOKE_HANDLER, \
1229 } \
1230) \
1231UACPI_OP( \
1232 AcquireOp, UACPI_EXT_OP(0x23), \
1233 { \
1234 UACPI_PARSE_OP_SUPERNAME, \
1235 UACPI_PARSE_OP_LOAD_IMM, 2, \
1236 UACPI_PARSE_OP_LOAD_TRUE_OBJECT, \
1237 UACPI_PARSE_OP_INVOKE_HANDLER, \
1238 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1239 }, \
1240 UACPI_OP_PROPERTY_TERM_ARG \
1241) \
1242UACPI_OP( \
1243 SignalOp, UACPI_EXT_OP(0x24), \
1244 { \
1245 UACPI_PARSE_OP_SUPERNAME, \
1246 UACPI_PARSE_OP_INVOKE_HANDLER, \
1247 } \
1248) \
1249UACPI_OP( \
1250 WaitOp, UACPI_EXT_OP(0x25), \
1251 { \
1252 UACPI_PARSE_OP_SUPERNAME, \
1253 UACPI_PARSE_OP_OPERAND, \
1254 UACPI_PARSE_OP_LOAD_TRUE_OBJECT, \
1255 UACPI_PARSE_OP_INVOKE_HANDLER, \
1256 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1257 }, \
1258 UACPI_OP_PROPERTY_TERM_ARG \
1259) \
1260UACPI_OP( \
1261 ResetOp, UACPI_EXT_OP(0x26), \
1262 { \
1263 UACPI_PARSE_OP_SUPERNAME, \
1264 UACPI_PARSE_OP_INVOKE_HANDLER, \
1265 } \
1266) \
1267UACPI_OP( \
1268 ReleaseOp, UACPI_EXT_OP(0x27), \
1269 { \
1270 UACPI_PARSE_OP_SUPERNAME, \
1271 UACPI_PARSE_OP_INVOKE_HANDLER, \
1272 } \
1273) \
1274UACPI_BUILD_TO_FROM_BCD(From, 0x28) \
1275UACPI_BUILD_TO_FROM_BCD(To, 0x29) \
1276UACPI_OP( \
1277 UnloadOp, UACPI_EXT_OP(0x2A), \
1278 { \
1279 UACPI_PARSE_OP_SUPERNAME, \
1280 UACPI_PARSE_OP_INVOKE_HANDLER, \
1281 } \
1282) \
1283UACPI_OP( \
1284 RevisionOp, UACPI_EXT_OP(0x30), \
1285 { \
1286 UACPI_PARSE_OP_LOAD_INLINE_IMM_AS_OBJECT, \
1287 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
1288 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1289 }, \
1290 UACPI_OP_PROPERTY_TERM_ARG \
1291) \
1292UACPI_OP( \
1293 DebugOp, UACPI_EXT_OP(0x31), \
1294 { \
1295 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1296 UACPI_OBJECT_DEBUG, \
1297 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1298 }, \
1299 UACPI_OP_PROPERTY_TERM_ARG | \
1300 UACPI_OP_PROPERTY_SUPERNAME | \
1301 UACPI_OP_PROPERTY_TARGET \
1302) \
1303UACPI_OP( \
1304 FatalOp, UACPI_EXT_OP(0x32), \
1305 { \
1306 UACPI_PARSE_OP_LOAD_IMM, 1, \
1307 UACPI_PARSE_OP_LOAD_IMM, 4, \
1308 UACPI_PARSE_OP_OPERAND, \
1309 UACPI_PARSE_OP_INVOKE_HANDLER, \
1310 } \
1311) \
1312UACPI_OP( \
1313 TimerOp, UACPI_EXT_OP(0x33), \
1314 { \
1315 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1316 UACPI_OBJECT_INTEGER, \
1317 UACPI_PARSE_OP_INVOKE_HANDLER, \
1318 UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV, \
1319 }, \
1320 UACPI_OP_PROPERTY_TERM_ARG \
1321) \
1322UACPI_OP( \
1323 OpRegionOp, UACPI_EXT_OP(0x80), \
1324 { \
1325 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
1326 UACPI_PARSE_OP_LOAD_IMM, 1, \
1327 UACPI_PARSE_OP_OPERAND, \
1328 UACPI_PARSE_OP_OPERAND, \
1329 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
1330 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1331 UACPI_OBJECT_OPERATION_REGION, \
1332 UACPI_PARSE_OP_INVOKE_HANDLER, \
1333 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 0, \
1334 } \
1335) \
1336UACPI_OUT_OF_LINE_OP( \
1337 FieldOp, UACPI_EXT_OP(0x81), \
1338 uacpi_field_op_decode_ops, \
1339 UACPI_OP_PROPERTY_OUT_OF_LINE \
1340) \
1341UACPI_BUILD_NAMED_SCOPE_OBJECT_OP( \
1342 Device, 0x82, UACPI_OBJECT_DEVICE \
1343) \
1344UACPI_BUILD_NAMED_SCOPE_OBJECT_OP( \
1345 Processor, 0x83, UACPI_OBJECT_PROCESSOR, \
1346 UACPI_PARSE_OP_LOAD_IMM, 1, \
1347 UACPI_PARSE_OP_LOAD_IMM, 4, \
1348 UACPI_PARSE_OP_LOAD_IMM, 1 \
1349) \
1350UACPI_BUILD_NAMED_SCOPE_OBJECT_OP( \
1351 PowerRes, 0x84, UACPI_OBJECT_POWER_RESOURCE, \
1352 UACPI_PARSE_OP_LOAD_IMM, 1, \
1353 UACPI_PARSE_OP_LOAD_IMM, 2 \
1354) \
1355UACPI_BUILD_NAMED_SCOPE_OBJECT_OP( \
1356 ThermalZone, 0x85, UACPI_OBJECT_THERMAL_ZONE \
1357) \
1358UACPI_OUT_OF_LINE_OP( \
1359 IndexFieldOp, UACPI_EXT_OP(0x86), \
1360 uacpi_index_field_op_decode_ops, \
1361 UACPI_OP_PROPERTY_OUT_OF_LINE \
1362) \
1363UACPI_OUT_OF_LINE_OP( \
1364 BankFieldOp, UACPI_EXT_OP(0x87), \
1365 uacpi_bank_field_op_decode_ops, \
1366 UACPI_OP_PROPERTY_OUT_OF_LINE \
1367) \
1368UACPI_OP( \
1369 DataRegionOp, UACPI_EXT_OP(0x88), \
1370 { \
1371 UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD, \
1372 UACPI_PARSE_OP_STRING, \
1373 UACPI_PARSE_OP_STRING, \
1374 UACPI_PARSE_OP_STRING, \
1375 UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL, 0, \
1376 UACPI_PARSE_OP_OBJECT_ALLOC_TYPED, \
1377 UACPI_OBJECT_OPERATION_REGION, \
1378 UACPI_PARSE_OP_INVOKE_HANDLER, \
1379 UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE, 0, \
1380 } \
1381)
1382
1384#define UACPI_OP(name, code, ...) UACPI_AML_OP_##name = code,
1385#define UACPI_OUT_OF_LINE_OP(name, code, ...) UACPI_AML_OP_##name = code,
1388#undef UACPI_OP
1389#undef UACPI_OUT_OF_LINE_OP
UINT op
Definition: effect.c:236
uacpi_u8 uacpi_load_table_op_decode_ops[]
Definition: opcodes.c:149
const uacpi_char * uacpi_parse_op_to_string(enum uacpi_parse_op op)
Definition: opcodes.c:260
uacpi_u8 uacpi_load_op_decode_ops[]
Definition: opcodes.c:119
uacpi_parse_op
Definition: opcodes.h:18
@ UACPI_PARSE_OP_OPERAND
Definition: opcodes.h:55
@ UACPI_PARSE_OP_COMPUTATIONAL_DATA
Definition: opcodes.h:64
@ UACPI_PARSE_OP_OBJECT_CONVERT_TO_DEEP_COPY
Definition: opcodes.h:119
@ UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL_IF_LOAD
Definition: opcodes.h:107
@ UACPI_PARSE_OP_END
Definition: opcodes.h:19
@ UACPI_PARSE_OP_BAD_OPCODE
Definition: opcodes.h:186
@ UACPI_PARSE_OP_STORE_TO_TARGET_INDIRECT
Definition: opcodes.h:176
@ UACPI_PARSE_OP_TERM_ARG
Definition: opcodes.h:39
@ UACPI_PARSE_OP_CREATE_NAMESTRING
Definition: opcodes.h:83
@ UACPI_PARSE_OP_TRACKED_PKGLEN
Definition: opcodes.h:77
@ UACPI_PARSE_OP_CONVERT_NAMESTRING
Definition: opcodes.h:211
@ UACPI_PARSE_OP_INSTALL_NAMESPACE_NODE
Definition: opcodes.h:156
@ UACPI_PARSE_OP_IF_LAST_NULL
Definition: opcodes.h:230
@ UACPI_PARSE_OP_AML_PC_DECREMENT
Definition: opcodes.h:189
@ UACPI_PARSE_OP_OBJECT_COPY_TO_PREV
Definition: opcodes.h:167
@ UACPI_PARSE_OP_EXISTING_NAMESTRING_OR_NULL
Definition: opcodes.h:101
@ UACPI_PARSE_OP_LOAD_TRUE_OBJECT
Definition: opcodes.h:147
@ UACPI_PARSE_OP_PKGLEN
Definition: opcodes.h:70
@ UACPI_PARSE_OP_EXISTING_NAMESTRING
Definition: opcodes.h:95
@ UACPI_PARSE_OP_TERM_ARG_OR_NAMED_OBJECT
Definition: opcodes.h:46
@ UACPI_PARSE_OP_IF_LAST_NOT_NULL
Definition: opcodes.h:236
@ UACPI_PARSE_OP_INVOKE_HANDLER
Definition: opcodes.h:110
@ UACPI_PARSE_OP_IF_HAS_DATA
Definition: opcodes.h:217
@ UACPI_PARSE_OP_DISPATCH_TABLE_LOAD
Definition: opcodes.h:205
@ UACPI_PARSE_OP_TERM_ARG_UNWRAP_INTERNAL
Definition: opcodes.h:40
@ UACPI_PARSE_OP_TYPECHECK
Definition: opcodes.h:153
@ UACPI_PARSE_OP_SIMPLE_NAME
Definition: opcodes.h:31
@ UACPI_PARSE_OP_IF_LAST_FALSE
Definition: opcodes.h:248
@ UACPI_PARSE_OP_JMP
Definition: opcodes.h:271
@ UACPI_PARSE_OP_ITEM_POP
Definition: opcodes.h:195
@ UACPI_PARSE_OP_SWITCH_TO_NEXT_IF_EQUALS
Definition: opcodes.h:259
@ UACPI_PARSE_OP_SUPERNAME_OR_UNRESOLVED
Definition: opcodes.h:36
@ UACPI_PARSE_OP_RECORD_AML_PC
Definition: opcodes.h:128
@ UACPI_PARSE_OP_DISPATCH_METHOD_CALL
Definition: opcodes.h:198
@ UACPI_PARSE_OP_SUPERNAME
Definition: opcodes.h:34
@ UACPI_PARSE_OP_OBJECT_ALLOC
Definition: opcodes.h:113
@ UACPI_PARSE_OP_MAX
Definition: opcodes.h:272
@ UACPI_PARSE_OP_OBJECT_TRANSFER_TO_PREV
Definition: opcodes.h:159
@ UACPI_PARSE_OP_UNREACHABLE
Definition: opcodes.h:183
@ UACPI_PARSE_OP_IF_LAST_TRUE
Definition: opcodes.h:251
@ UACPI_PARSE_OP_IF_NULL
Definition: opcodes.h:224
@ UACPI_PARSE_OP_LOAD_INLINE_IMM_AS_OBJECT
Definition: opcodes.h:131
@ UACPI_PARSE_OP_STRING
Definition: opcodes.h:58
@ UACPI_PARSE_OP_LOAD_IMM
Definition: opcodes.h:140
@ UACPI_PARSE_OP_STORE_TO_TARGET
Definition: opcodes.h:170
@ UACPI_PARSE_OP_SKIP_WITH_WARN_IF_NULL
Definition: opcodes.h:25
@ UACPI_PARSE_OP_CREATE_NAMESTRING_OR_NULL_IF_LOAD
Definition: opcodes.h:89
@ UACPI_PARSE_OP_EMPTY_OBJECT_ALLOC
Definition: opcodes.h:115
@ UACPI_PARSE_OP_LOAD_IMM_AS_OBJECT
Definition: opcodes.h:143
@ UACPI_PARSE_OP_OBJECT_CONVERT_TO_SHALLOW_COPY
Definition: opcodes.h:118
@ UACPI_PARSE_OP_TARGET
Definition: opcodes.h:67
@ UACPI_PARSE_OP_TERM_ARG_OR_NAMED_OBJECT_OR_UNRESOLVED
Definition: opcodes.h:52
@ UACPI_PARSE_OP_IF_LAST_EQUALS
Definition: opcodes.h:242
@ UACPI_PARSE_OP_IF_NOT_NULL
Definition: opcodes.h:233
@ UACPI_PARSE_OP_LOAD_FALSE_OBJECT
Definition: opcodes.h:146
@ UACPI_PARSE_OP_OBJECT_ALLOC_TYPED
Definition: opcodes.h:125
@ UACPI_PARSE_OP_EMIT_SKIP_WARN
Definition: opcodes.h:28
@ UACPI_PARSE_OP_LOAD_ZERO_IMM
Definition: opcodes.h:137
@ UACPI_PARSE_OP_IF_SWITCHED_FROM
Definition: opcodes.h:266
@ UACPI_PARSE_OP_TRUNCATE_NUMBER
Definition: opcodes.h:150
@ UACPI_PARSE_OP_IMM_DECREMENT
Definition: opcodes.h:192
@ UACPI_PARSE_OP_LOAD_INLINE_IMM
Definition: opcodes.h:134
const struct uacpi_op_spec * uacpi_get_op_spec(uacpi_aml_op)
Definition: opcodes.c:44
uacpi_op_property
Definition: opcodes.h:285
@ UACPI_OP_PROPERTY_SIMPLE_NAME
Definition: opcodes.h:288
@ UACPI_OP_PROPERTY_TERM_ARG
Definition: opcodes.h:286
@ UACPI_OP_PROPERTY_SUPERNAME
Definition: opcodes.h:287
@ UACPI_OP_PROPERTY_OUT_OF_LINE
Definition: opcodes.h:292
@ UACPI_OP_PROPERTY_RESERVED
Definition: opcodes.h:295
@ UACPI_OP_PROPERTY_TARGET
Definition: opcodes.h:289
uacpi_u8 uacpi_bank_field_op_decode_ops[]
Definition: opcodes.c:102
uacpi_u8 uacpi_field_op_decode_ops[]
Definition: opcodes.c:95
#define UACPI_ENUMERATE_EXT_OPCODES
Definition: opcodes.h:1154
uacpi_aml_op
Definition: opcodes.h:1383
uacpi_u8 uacpi_index_field_op_decode_ops[]
Definition: opcodes.c:111
#define UACPI_ENUMERATE_OPCODES
Definition: opcodes.h:498
char uacpi_char
Definition: types.h:44
uint16_t uacpi_u16
Definition: types.h:20
uint8_t uacpi_u8
Definition: types.h:19
uacpi_aml_op code
Definition: opcodes.h:305
uacpi_u8 * indirect_decode_ops
Definition: opcodes.h:302
uacpi_u8 properties
Definition: opcodes.h:304
uacpi_char * name
Definition: opcodes.h:299
uacpi_u8 decode_ops[16]
Definition: opcodes.h:301