2 ACPI Sdt Protocol Driver
4 Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved. <BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
11 GLOBAL_REMOVE_IF_UNREFERENCED
12 AML_BYTE_ENCODING mAmlByteEncoding
[] = {
13 // OpCode SubOpCode Num 1 2 3 4 5 6 Attribute
14 /* ZeroOp - 0x00 */ { AML_ZERO_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
15 /* OneOp - 0x01 */ { AML_ONE_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
16 /* AliasOp - 0x06 */ { AML_ALIAS_OP
, 0, 2, { AML_NAME
, AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IN_NAMESPACE
},
17 /* NameOp - 0x08 */ { AML_NAME_OP
, 0, 2, { AML_NAME
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IN_NAMESPACE
},
18 /* BytePrefix - 0x0A */ { AML_BYTE_PREFIX
, 0, 1, { AML_UINT8
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
19 /* WordPrefix - 0x0B */ { AML_WORD_PREFIX
, 0, 1, { AML_UINT16
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
20 /* DWordPrefix - 0x0C */ { AML_DWORD_PREFIX
, 0, 1, { AML_UINT32
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
21 /* StringPrefix - 0x0D */ { AML_STRING_PREFIX
, 0, 1, { AML_STRING
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
22 /* QWordPrefix - 0x0E */ { AML_QWORD_PREFIX
, 0, 1, { AML_UINT64
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
23 /* ScopeOp - 0x10 */ { AML_SCOPE_OP
, 0, 1, { AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
| AML_IN_NAMESPACE
},
24 /* BufferOp - 0x11 */ { AML_BUFFER_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
},
25 /* PackageOp - 0x12 */ { AML_PACKAGE_OP
, 0, 1, { AML_UINT8
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
},
26 /* VarPackageOp - 0x13 */ { AML_VAR_PACKAGE_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
},
27 /* MethodOp - 0x14 */ { AML_METHOD_OP
, 0, 2, { AML_NAME
, AML_UINT8
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
| AML_IN_NAMESPACE
},
28 /* DualNamePrefix - 0x2F */ { AML_DUAL_NAME_PREFIX
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
29 /* MultiNamePrefix - 0x2F */ { AML_MULTI_NAME_PREFIX
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
30 /* NameChar - 0x41 */ { 'A', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
31 /* NameChar - 0x42 */ { 'B', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
32 /* NameChar - 0x43 */ { 'C', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
33 /* NameChar - 0x44 */ { 'D', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
34 /* NameChar - 0x45 */ { 'E', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
35 /* NameChar - 0x46 */ { 'F', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
36 /* NameChar - 0x47 */ { 'G', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
37 /* NameChar - 0x48 */ { 'H', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
38 /* NameChar - 0x49 */ { 'I', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
39 /* NameChar - 0x4A */ { 'J', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
40 /* NameChar - 0x4B */ { 'K', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
41 /* NameChar - 0x4C */ { 'L', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
42 /* NameChar - 0x4D */ { 'M', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
43 /* NameChar - 0x4E */ { 'N', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
44 /* NameChar - 0x4F */ { 'O', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
45 /* NameChar - 0x50 */ { 'P', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
46 /* NameChar - 0x51 */ { 'Q', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
47 /* NameChar - 0x52 */ { 'R', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
48 /* NameChar - 0x53 */ { 'S', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
49 /* NameChar - 0x54 */ { 'T', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
50 /* NameChar - 0x55 */ { 'U', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
51 /* NameChar - 0x56 */ { 'V', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
52 /* NameChar - 0x57 */ { 'W', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
53 /* NameChar - 0x58 */ { 'X', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
54 /* NameChar - 0x59 */ { 'Y', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
55 /* NameChar - 0x5A */ { 'Z', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
56 /* MutexOp - 0x5B 0x01 */ { AML_EXT_OP
, AML_EXT_MUTEX_OP
, 2, { AML_NAME
, AML_UINT8
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IN_NAMESPACE
},
57 /* EventOp - 0x5B 0x02 */ { AML_EXT_OP
, AML_EXT_EVENT_OP
, 1, { AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IN_NAMESPACE
},
58 /* CondRefOfOp - 0x5B 0x12 */ { AML_EXT_OP
, AML_EXT_COND_REF_OF_OP
, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
59 /* CreateFieldOp - 0x5B 0x13 */ { AML_EXT_OP
, AML_EXT_CREATE_FIELD_OP
, 4, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NAME
, AML_NONE
, AML_NONE
}, 0 },
60 /* LoadTableOp - 0x5B 0x1F */ { AML_EXT_OP
, AML_EXT_LOAD_TABLE_OP
, 6, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_OBJECT
}, 0 },
61 /* LoadOp - 0x5B 0x20 */ { AML_EXT_OP
, AML_EXT_LOAD_OP
, 2, { AML_NAME
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
62 /* StallOp - 0x5B 0x21 */ { AML_EXT_OP
, AML_EXT_STALL_OP
, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
63 /* SleepOp - 0x5B 0x22 */ { AML_EXT_OP
, AML_EXT_SLEEP_OP
, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
64 /* AcquireOp - 0x5B 0x23 */ { AML_EXT_OP
, AML_EXT_ACQUIRE_OP
, 2, { AML_OBJECT
, AML_UINT16
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
65 /* SignalOp - 0x5B 0x24 */ { AML_EXT_OP
, AML_EXT_SIGNAL_OP
, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
66 /* WaitOp - 0x5B 0x25 */ { AML_EXT_OP
, AML_EXT_WAIT_OP
, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
67 /* ResetOp - 0x5B 0x26 */ { AML_EXT_OP
, AML_EXT_RESET_OP
, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
68 /* ReleaseOp - 0x5B 0x27 */ { AML_EXT_OP
, AML_EXT_RELEASE_OP
, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
69 /* FromBCDOp - 0x5B 0x28 */ { AML_EXT_OP
, AML_EXT_FROM_BCD_OP
, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
70 /* ToBCDOp - 0x5B 0x29 */ { AML_EXT_OP
, AML_EXT_TO_BCD_OP
, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
71 /* UnloadOp - 0x5B 0x2A */ { AML_EXT_OP
, AML_EXT_UNLOAD_OP
, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
72 /* RevisionOp - 0x5B 0x30 */ { AML_EXT_OP
, AML_EXT_REVISION_OP
, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
73 /* DebugOp - 0x5B 0x31 */ { AML_EXT_OP
, AML_EXT_DEBUG_OP
, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
74 /* FatalOp - 0x5B 0x32 */ { AML_EXT_OP
, AML_EXT_FATAL_OP
, 3, { AML_UINT8
, AML_UINT32
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
75 /* TimerOp - 0x5B 0x33 */ { AML_EXT_OP
, AML_EXT_TIMER_OP
, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
76 /* OpRegionOp - 0x5B 0x80 */ { AML_EXT_OP
, AML_EXT_REGION_OP
, 4, { AML_NAME
, AML_UINT8
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
}, AML_IN_NAMESPACE
},
77 /* FieldOp - 0x5B 0x81 */ { AML_EXT_OP
, AML_EXT_FIELD_OP
, 2, { AML_NAME
, AML_UINT8
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
},
78 /* DeviceOp - 0x5B 0x82 */ { AML_EXT_OP
, AML_EXT_DEVICE_OP
, 1, { AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
| AML_IN_NAMESPACE
},
79 /* ProcessorOp - 0x5B 0x83 */ { AML_EXT_OP
, AML_EXT_PROCESSOR_OP
, 4, { AML_NAME
, AML_UINT8
, AML_UINT32
, AML_UINT8
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
| AML_IN_NAMESPACE
},
80 /* PowerResOp - 0x5B 0x84 */ { AML_EXT_OP
, AML_EXT_POWER_RES_OP
, 3, { AML_NAME
, AML_UINT8
, AML_UINT16
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
| AML_IN_NAMESPACE
},
81 /* ThermalZoneOp - 0x5B 0x85 */ { AML_EXT_OP
, AML_EXT_THERMAL_ZONE_OP
, 1, { AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
| AML_IN_NAMESPACE
},
82 /* IndexFieldOp - 0x5B 0x86 */ { AML_EXT_OP
, AML_EXT_INDEX_FIELD_OP
, 3, { AML_NAME
, AML_NAME
, AML_UINT8
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
},
83 /* BankFieldOp - 0x5B 0x87 */ { AML_EXT_OP
, AML_EXT_BANK_FIELD_OP
, 4, { AML_NAME
, AML_NAME
, AML_OBJECT
, AML_UINT8
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
},
84 /* DataRegionOp - 0x5B 0x88 */ { AML_EXT_OP
, AML_EXT_DATA_REGION_OP
, 4, { AML_NAME
, AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
}, AML_IN_NAMESPACE
},
85 /* RootChar - 0x5C */ { AML_ROOT_CHAR
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
86 /* ParentPrefixChar - 0x5E */ { AML_PARENT_PREFIX_CHAR
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
87 /* NameChar - 0x5F */ { '_', 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_IS_NAME_CHAR
},
88 /* Local0Op - 0x60 */ { AML_LOCAL0
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
89 /* Local1Op - 0x61 */ { AML_LOCAL1
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
90 /* Local2Op - 0x62 */ { AML_LOCAL2
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
91 /* Local3Op - 0x63 */ { AML_LOCAL3
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
92 /* Local4Op - 0x64 */ { AML_LOCAL4
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
93 /* Local5Op - 0x65 */ { AML_LOCAL5
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
94 /* Local6Op - 0x66 */ { AML_LOCAL6
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
95 /* Local7Op - 0x67 */ { AML_LOCAL7
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
96 /* Arg0Op - 0x68 */ { AML_ARG0
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
97 /* Arg1Op - 0x69 */ { AML_ARG1
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
98 /* Arg2Op - 0x6A */ { AML_ARG2
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
99 /* Arg3Op - 0x6B */ { AML_ARG3
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
100 /* Arg4Op - 0x6C */ { AML_ARG4
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
101 /* Arg5Op - 0x6D */ { AML_ARG5
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
102 /* Arg6Op - 0x6E */ { AML_ARG6
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
103 /* StoreOp - 0x70 */ { AML_STORE_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
104 /* RefOfOp - 0x71 */ { AML_REF_OF_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
105 /* AddOp - 0x72 */ { AML_ADD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
106 /* ConcatOp - 0x73 */ { AML_CONCAT_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
107 /* SubtractOp - 0x74 */ { AML_SUBTRACT_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
108 /* IncrementOp - 0x75 */ { AML_INCREMENT_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
109 /* DecrementOp - 0x76 */ { AML_DECREMENT_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
110 /* MultiplyOp - 0x77 */ { AML_MULTIPLY_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
111 /* DivideOp - 0x78 */ { AML_DIVIDE_OP
, 0, 4, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
}, 0 },
112 /* ShiftLeftOp - 0x79 */ { AML_SHIFT_LEFT_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
113 /* ShiftRightOp - 0x7A */ { AML_SHIFT_RIGHT_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
114 /* AndOp - 0x7B */ { AML_AND_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
115 /* NAndOp - 0x7C */ { AML_NAND_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
116 /* OrOp - 0x7D */ { AML_OR_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
117 /* NorOp - 0x7E */ { AML_NOR_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
118 /* XOrOp - 0x7F */ { AML_XOR_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
119 /* NotOp - 0x80 */ { AML_NOT_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
120 /* FindSetLeftBitOp - 0x81 */ { AML_FIND_SET_LEFT_BIT_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
121 /* FindSetRightBitOp - 0x82 */ { AML_FIND_SET_RIGHT_BIT_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
122 /* DerefOfOp - 0x83 */ { AML_DEREF_OF_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
123 /* ConcatResOp - 0x84 */ { AML_CONCAT_RES_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
124 /* ModOp - 0x85 */ { AML_MOD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
125 /* NotifyOp - 0x86 */ { AML_NOTIFY_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
126 /* SizeOfOp - 0x87 */ { AML_SIZE_OF_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
127 /* IndexOp - 0x88 */ { AML_INDEX_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
128 /* MatchOp - 0x89 */ { AML_MATCH_OP
, 0, 6, { AML_OBJECT
, AML_UINT8
, AML_OBJECT
, AML_UINT8
, AML_OBJECT
, AML_OBJECT
}, 0 },
129 /* CreateDWordFieldOp - 0x8A */ { AML_CREATE_DWORD_FIELD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
130 /* CreateWordFieldOp - 0x8B */ { AML_CREATE_WORD_FIELD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
131 /* CreateByteFieldOp - 0x8C */ { AML_CREATE_BYTE_FIELD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
132 /* CreateBitFieldOp - 0x8D */ { AML_CREATE_BIT_FIELD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
133 /* ObjectTypeOp - 0x8E */ { AML_OBJECT_TYPE_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
134 /* CreateQWordFieldOp - 0x8F */ { AML_CREATE_QWORD_FIELD_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_NAME
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
135 /* LAndOp - 0x90 */ { AML_LAND_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
136 /* LOrOp - 0x91 */ { AML_LOR_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
137 /* LNotOp - 0x92 */ { AML_LNOT_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
138 /* LEqualOp - 0x93 */ { AML_LEQUAL_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
139 /* LGreaterOp - 0x94 */ { AML_LGREATER_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
140 /* LLessOp - 0x95 */ { AML_LLESS_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
141 /* ToBufferOp - 0x96 */ { AML_TO_BUFFER_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
142 /* ToDecimalStringOp - 0x97 */ { AML_TO_DEC_STRING_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
143 /* ToHexStringOp - 0x98 */ { AML_TO_HEX_STRING_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
144 /* ToIntegerOp - 0x99 */ { AML_TO_INTEGER_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
145 /* ToStringOp - 0x9C */ { AML_TO_STRING_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
146 /* CopyObjectOp - 0x9D */ { AML_COPY_OBJECT_OP
, 0, 2, { AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
147 /* MidOp - 0x9E */ { AML_MID_OP
, 0, 3, { AML_OBJECT
, AML_OBJECT
, AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
148 /* ContinueOp - 0x9F */ { AML_CONTINUE_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
149 /* IfOp - 0xA0 */ { AML_IF_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
},
150 /* ElseOp - 0xA1 */ { AML_ELSE_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
},
151 /* WhileOp - 0xA2 */ { AML_WHILE_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, AML_HAS_PKG_LENGTH
| AML_HAS_CHILD_OBJ
},
152 /* NoopOp - 0xA3 */ { AML_NOOP_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
153 /* ReturnOp - 0xA4 */ { AML_RETURN_OP
, 0, 1, { AML_OBJECT
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
154 /* BreakOp - 0xA5 */ { AML_BREAK_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
155 /* BreakPointOp - 0xCC */ { AML_BREAK_POINT_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
156 /* OnesOp - 0xFF */ { AML_ONES_OP
, 0, 0, { AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
, AML_NONE
}, 0 },
159 GLOBAL_REMOVE_IF_UNREFERENCED
160 EFI_ACPI_DATA_TYPE mAmlTypeToAcpiType
[] = {
161 EFI_ACPI_DATA_TYPE_NONE
, // AML_NONE
162 EFI_ACPI_DATA_TYPE_OPCODE
, // AML_OPCODE
163 EFI_ACPI_DATA_TYPE_UINT
, // AML_UINT8
164 EFI_ACPI_DATA_TYPE_UINT
, // AML_UINT16
165 EFI_ACPI_DATA_TYPE_UINT
, // AML_UINT32
166 EFI_ACPI_DATA_TYPE_UINT
, // AML_UINT64
167 EFI_ACPI_DATA_TYPE_NAME_STRING
, // AML_NAME
168 EFI_ACPI_DATA_TYPE_STRING
, // AML_STRING
169 EFI_ACPI_DATA_TYPE_CHILD
// AML_OBJECT
173 This function returns AmlByteEncoding according to OpCode Byte.
175 @param[in] OpByteBuffer OpCode byte buffer.
177 @return AmlByteEncoding
181 IN UINT8
*OpByteBuffer
189 // Get OpCode and SubOpCode
191 OpCode
= OpByteBuffer
[0];
192 if (OpCode
== AML_EXT_OP
) {
193 SubOpCode
= OpByteBuffer
[1];
201 for (Index
= 0; Index
< sizeof (mAmlByteEncoding
)/sizeof (mAmlByteEncoding
[0]); Index
++) {
202 if ((mAmlByteEncoding
[Index
].OpCode
== OpCode
) && (mAmlByteEncoding
[Index
].SubOpCode
== SubOpCode
)) {
203 return &mAmlByteEncoding
[Index
];
211 This function returns AcpiDataType according to AmlType.
213 @param[in] AmlType AML Type.
219 IN AML_OP_PARSE_FORMAT AmlType
222 if (AmlType
>= sizeof (mAmlTypeToAcpiType
)/sizeof (mAmlTypeToAcpiType
[0])) {
224 return EFI_ACPI_DATA_TYPE_NONE
;
227 return mAmlTypeToAcpiType
[AmlType
];
231 This function retuns package length from the buffer.
233 @param[in] Buffer AML buffer
234 @param[out] PkgLength The total length of package.
236 @return The byte data count to present the package length.
250 // <bit 7-6: ByteData count that follows (0-3)>
251 // <bit 5-4: Only used if PkgLength < 63>
252 // <bit 3-0: Least significant package length nybble>
254 // Note: The high 2 bits of the first byte reveal how many follow bytes are in the
255 // If the PkgLength has only one byte, bit 0 through 5 are used to encode the
256 // package length (in other words, values 0-63). If the package length value is more than
257 // 63, more than one byte must be used for the encoding in which case bit 4 and 5 of the
258 // PkgLeadByte are reserved and must be zero. If the multiple bytes encoding is used,
259 // bits 0-3 of the PkgLeadByte become the least significant 4 bits of the resulting
260 // package length value. The next ByteData will become the next least significant 8 bits
261 // of the resulting value and so on, up to 3 ByteData bytes. Thus, the maximum package
266 ByteCount
= (UINT8
)((LeadByte
>> 6) & 0x03);
267 Offset
= ByteCount
+ 1;
272 RealLength
= (UINT32
)LeadByte
;
275 RealLength
= *(Buffer
+ 1);
276 RealLength
= (RealLength
<< 4) | (LeadByte
& 0xF);
279 RealLength
= *(Buffer
+ 1);
280 RealLength
|= (UINTN
)((*(Buffer
+ 2)) << 8);
281 RealLength
= (RealLength
<< 4) | (LeadByte
& 0xF);
284 RealLength
= *(Buffer
+ 1);
285 RealLength
|= (UINTN
)((*(Buffer
+ 2)) << 8);
286 RealLength
|= (UINTN
)((*(Buffer
+ 3)) << 16);
287 RealLength
= (RealLength
<< 4) | (LeadByte
& 0xF);
294 *PkgLength
= RealLength
;