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