0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef __AMLCODE_H__
0013 #define __AMLCODE_H__
0014
0015
0016
0017 #define AML_ZERO_OP (u16) 0x00
0018 #define AML_ONE_OP (u16) 0x01
0019 #define AML_ALIAS_OP (u16) 0x06
0020 #define AML_NAME_OP (u16) 0x08
0021 #define AML_BYTE_OP (u16) 0x0a
0022 #define AML_WORD_OP (u16) 0x0b
0023 #define AML_DWORD_OP (u16) 0x0c
0024 #define AML_STRING_OP (u16) 0x0d
0025 #define AML_QWORD_OP (u16) 0x0e
0026 #define AML_SCOPE_OP (u16) 0x10
0027 #define AML_BUFFER_OP (u16) 0x11
0028 #define AML_PACKAGE_OP (u16) 0x12
0029 #define AML_VARIABLE_PACKAGE_OP (u16) 0x13
0030 #define AML_METHOD_OP (u16) 0x14
0031 #define AML_EXTERNAL_OP (u16) 0x15
0032 #define AML_DUAL_NAME_PREFIX (u16) 0x2e
0033 #define AML_MULTI_NAME_PREFIX (u16) 0x2f
0034 #define AML_EXTENDED_PREFIX (u16) 0x5b
0035 #define AML_ROOT_PREFIX (u16) 0x5c
0036 #define AML_PARENT_PREFIX (u16) 0x5e
0037 #define AML_FIRST_LOCAL_OP (u16) 0x60
0038 #define AML_LOCAL0 (u16) 0x60
0039 #define AML_LOCAL1 (u16) 0x61
0040 #define AML_LOCAL2 (u16) 0x62
0041 #define AML_LOCAL3 (u16) 0x63
0042 #define AML_LOCAL4 (u16) 0x64
0043 #define AML_LOCAL5 (u16) 0x65
0044 #define AML_LOCAL6 (u16) 0x66
0045 #define AML_LOCAL7 (u16) 0x67
0046 #define AML_FIRST_ARG_OP (u16) 0x68
0047 #define AML_ARG0 (u16) 0x68
0048 #define AML_ARG1 (u16) 0x69
0049 #define AML_ARG2 (u16) 0x6a
0050 #define AML_ARG3 (u16) 0x6b
0051 #define AML_ARG4 (u16) 0x6c
0052 #define AML_ARG5 (u16) 0x6d
0053 #define AML_ARG6 (u16) 0x6e
0054 #define AML_STORE_OP (u16) 0x70
0055 #define AML_REF_OF_OP (u16) 0x71
0056 #define AML_ADD_OP (u16) 0x72
0057 #define AML_CONCATENATE_OP (u16) 0x73
0058 #define AML_SUBTRACT_OP (u16) 0x74
0059 #define AML_INCREMENT_OP (u16) 0x75
0060 #define AML_DECREMENT_OP (u16) 0x76
0061 #define AML_MULTIPLY_OP (u16) 0x77
0062 #define AML_DIVIDE_OP (u16) 0x78
0063 #define AML_SHIFT_LEFT_OP (u16) 0x79
0064 #define AML_SHIFT_RIGHT_OP (u16) 0x7a
0065 #define AML_BIT_AND_OP (u16) 0x7b
0066 #define AML_BIT_NAND_OP (u16) 0x7c
0067 #define AML_BIT_OR_OP (u16) 0x7d
0068 #define AML_BIT_NOR_OP (u16) 0x7e
0069 #define AML_BIT_XOR_OP (u16) 0x7f
0070 #define AML_BIT_NOT_OP (u16) 0x80
0071 #define AML_FIND_SET_LEFT_BIT_OP (u16) 0x81
0072 #define AML_FIND_SET_RIGHT_BIT_OP (u16) 0x82
0073 #define AML_DEREF_OF_OP (u16) 0x83
0074 #define AML_CONCATENATE_TEMPLATE_OP (u16) 0x84
0075 #define AML_MOD_OP (u16) 0x85
0076 #define AML_NOTIFY_OP (u16) 0x86
0077 #define AML_SIZE_OF_OP (u16) 0x87
0078 #define AML_INDEX_OP (u16) 0x88
0079 #define AML_MATCH_OP (u16) 0x89
0080 #define AML_CREATE_DWORD_FIELD_OP (u16) 0x8a
0081 #define AML_CREATE_WORD_FIELD_OP (u16) 0x8b
0082 #define AML_CREATE_BYTE_FIELD_OP (u16) 0x8c
0083 #define AML_CREATE_BIT_FIELD_OP (u16) 0x8d
0084 #define AML_OBJECT_TYPE_OP (u16) 0x8e
0085 #define AML_CREATE_QWORD_FIELD_OP (u16) 0x8f
0086 #define AML_LOGICAL_AND_OP (u16) 0x90
0087 #define AML_LOGICAL_OR_OP (u16) 0x91
0088 #define AML_LOGICAL_NOT_OP (u16) 0x92
0089 #define AML_LOGICAL_EQUAL_OP (u16) 0x93
0090 #define AML_LOGICAL_GREATER_OP (u16) 0x94
0091 #define AML_LOGICAL_LESS_OP (u16) 0x95
0092 #define AML_TO_BUFFER_OP (u16) 0x96
0093 #define AML_TO_DECIMAL_STRING_OP (u16) 0x97
0094 #define AML_TO_HEX_STRING_OP (u16) 0x98
0095 #define AML_TO_INTEGER_OP (u16) 0x99
0096 #define AML_TO_STRING_OP (u16) 0x9c
0097 #define AML_COPY_OBJECT_OP (u16) 0x9d
0098 #define AML_MID_OP (u16) 0x9e
0099 #define AML_CONTINUE_OP (u16) 0x9f
0100 #define AML_IF_OP (u16) 0xa0
0101 #define AML_ELSE_OP (u16) 0xa1
0102 #define AML_WHILE_OP (u16) 0xa2
0103 #define AML_NOOP_OP (u16) 0xa3
0104 #define AML_RETURN_OP (u16) 0xa4
0105 #define AML_BREAK_OP (u16) 0xa5
0106 #define AML_COMMENT_OP (u16) 0xa9
0107 #define AML_BREAKPOINT_OP (u16) 0xcc
0108 #define AML_ONES_OP (u16) 0xff
0109
0110
0111
0112
0113
0114 #define AML_LOGICAL_GREATER_EQUAL_OP (u16) 0x9295
0115 #define AML_LOGICAL_LESS_EQUAL_OP (u16) 0x9294
0116 #define AML_LOGICAL_NOT_EQUAL_OP (u16) 0x9293
0117
0118
0119
0120 #define AML_EXTENDED_OPCODE (u16) 0x5b00
0121
0122 #define AML_MUTEX_OP (u16) 0x5b01
0123 #define AML_EVENT_OP (u16) 0x5b02
0124 #define AML_SHIFT_RIGHT_BIT_OP (u16) 0x5b10
0125 #define AML_SHIFT_LEFT_BIT_OP (u16) 0x5b11
0126 #define AML_CONDITIONAL_REF_OF_OP (u16) 0x5b12
0127 #define AML_CREATE_FIELD_OP (u16) 0x5b13
0128 #define AML_LOAD_TABLE_OP (u16) 0x5b1f
0129 #define AML_LOAD_OP (u16) 0x5b20
0130 #define AML_STALL_OP (u16) 0x5b21
0131 #define AML_SLEEP_OP (u16) 0x5b22
0132 #define AML_ACQUIRE_OP (u16) 0x5b23
0133 #define AML_SIGNAL_OP (u16) 0x5b24
0134 #define AML_WAIT_OP (u16) 0x5b25
0135 #define AML_RESET_OP (u16) 0x5b26
0136 #define AML_RELEASE_OP (u16) 0x5b27
0137 #define AML_FROM_BCD_OP (u16) 0x5b28
0138 #define AML_TO_BCD_OP (u16) 0x5b29
0139 #define AML_UNLOAD_OP (u16) 0x5b2a
0140 #define AML_REVISION_OP (u16) 0x5b30
0141 #define AML_DEBUG_OP (u16) 0x5b31
0142 #define AML_FATAL_OP (u16) 0x5b32
0143 #define AML_TIMER_OP (u16) 0x5b33
0144 #define AML_REGION_OP (u16) 0x5b80
0145 #define AML_FIELD_OP (u16) 0x5b81
0146 #define AML_DEVICE_OP (u16) 0x5b82
0147 #define AML_PROCESSOR_OP (u16) 0x5b83
0148 #define AML_POWER_RESOURCE_OP (u16) 0x5b84
0149 #define AML_THERMAL_ZONE_OP (u16) 0x5b85
0150 #define AML_INDEX_FIELD_OP (u16) 0x5b86
0151 #define AML_BANK_FIELD_OP (u16) 0x5b87
0152 #define AML_DATA_REGION_OP (u16) 0x5b88
0153
0154
0155
0156
0157 #define AML_FIELD_OFFSET_OP (u8) 0x00
0158 #define AML_FIELD_ACCESS_OP (u8) 0x01
0159 #define AML_FIELD_CONNECTION_OP (u8) 0x02
0160 #define AML_FIELD_EXT_ACCESS_OP (u8) 0x03
0161
0162
0163
0164
0165
0166
0167 #define AML_INT_NAMEPATH_OP (u16) 0x002d
0168 #define AML_INT_NAMEDFIELD_OP (u16) 0x0030
0169 #define AML_INT_RESERVEDFIELD_OP (u16) 0x0031
0170 #define AML_INT_ACCESSFIELD_OP (u16) 0x0032
0171 #define AML_INT_BYTELIST_OP (u16) 0x0033
0172 #define AML_INT_METHODCALL_OP (u16) 0x0035
0173 #define AML_INT_RETURN_VALUE_OP (u16) 0x0036
0174 #define AML_INT_EVAL_SUBTREE_OP (u16) 0x0037
0175 #define AML_INT_CONNECTION_OP (u16) 0x0038
0176 #define AML_INT_EXTACCESSFIELD_OP (u16) 0x0039
0177
0178 #define ARG_NONE 0x0
0179
0180
0181
0182
0183
0184
0185
0186 #define ARGP_BYTEDATA 0x01
0187 #define ARGP_BYTELIST 0x02
0188 #define ARGP_CHARLIST 0x03
0189 #define ARGP_DATAOBJ 0x04
0190 #define ARGP_DATAOBJLIST 0x05
0191 #define ARGP_DWORDDATA 0x06
0192 #define ARGP_FIELDLIST 0x07
0193 #define ARGP_NAME 0x08
0194 #define ARGP_NAMESTRING 0x09
0195 #define ARGP_OBJLIST 0x0A
0196 #define ARGP_PKGLENGTH 0x0B
0197 #define ARGP_SUPERNAME 0x0C
0198 #define ARGP_TARGET 0x0D
0199 #define ARGP_TERMARG 0x0E
0200 #define ARGP_TERMLIST 0x0F
0201 #define ARGP_WORDDATA 0x10
0202 #define ARGP_QWORDDATA 0x11
0203 #define ARGP_SIMPLENAME 0x12
0204 #define ARGP_NAME_OR_REF 0x13
0205 #define ARGP_MAX 0x13
0206 #define ARGP_COMMENT 0x14
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222 #define ARGI_ANYTYPE 0x01
0223 #define ARGI_PACKAGE 0x02
0224 #define ARGI_EVENT 0x03
0225 #define ARGI_MUTEX 0x04
0226 #define ARGI_DDBHANDLE 0x05
0227
0228
0229
0230 #define ARGI_INTEGER 0x06
0231 #define ARGI_STRING 0x07
0232 #define ARGI_BUFFER 0x08
0233 #define ARGI_BUFFER_OR_STRING 0x09
0234 #define ARGI_COMPUTEDATA 0x0A
0235
0236
0237
0238 #define ARGI_INTEGER_REF 0x0B
0239 #define ARGI_OBJECT_REF 0x0C
0240 #define ARGI_DEVICE_REF 0x0D
0241 #define ARGI_REFERENCE 0x0E
0242 #define ARGI_TARGETREF 0x0F
0243 #define ARGI_FIXED_TARGET 0x10
0244 #define ARGI_SIMPLE_TARGET 0x11
0245 #define ARGI_STORE_TARGET 0x12
0246
0247
0248
0249 #define ARGI_DATAOBJECT 0x13
0250 #define ARGI_COMPLEXOBJ 0x14
0251 #define ARGI_REF_OR_STRING 0x15
0252 #define ARGI_REGION_OR_BUFFER 0x16
0253 #define ARGI_DATAREFOBJ 0x17
0254
0255
0256
0257 #define ARGI_INVALID_OPCODE 0xFFFFFFFF
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278 #define AML_LOGICAL 0x0001
0279 #define AML_LOGICAL_NUMERIC 0x0002
0280 #define AML_MATH 0x0004
0281 #define AML_CREATE 0x0008
0282 #define AML_FIELD 0x0010
0283 #define AML_DEFER 0x0020
0284 #define AML_NAMED 0x0040
0285 #define AML_NSNODE 0x0080
0286 #define AML_NSOPCODE 0x0100
0287 #define AML_NSOBJECT 0x0200
0288 #define AML_HAS_RETVAL 0x0400
0289 #define AML_HAS_TARGET 0x0800
0290 #define AML_HAS_ARGS 0x1000
0291 #define AML_CONSTANT 0x2000
0292 #define AML_NO_OPERAND_RESOLVE 0x4000
0293
0294
0295
0296 #define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL
0297 #define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS
0298 #define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL
0299 #define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET
0300 #define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
0301 #define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS
0302 #define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL
0303 #define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
0304 #define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
0305 #define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS
0306 #define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL
0307 #define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL
0308
0309
0310
0311
0312
0313 #define AML_TYPE_EXEC_0A_0T_1R 0x00
0314 #define AML_TYPE_EXEC_1A_0T_0R 0x01
0315 #define AML_TYPE_EXEC_1A_0T_1R 0x02
0316 #define AML_TYPE_EXEC_1A_1T_0R 0x03
0317 #define AML_TYPE_EXEC_1A_1T_1R 0x04
0318 #define AML_TYPE_EXEC_2A_0T_0R 0x05
0319 #define AML_TYPE_EXEC_2A_0T_1R 0x06
0320 #define AML_TYPE_EXEC_2A_1T_1R 0x07
0321 #define AML_TYPE_EXEC_2A_2T_1R 0x08
0322 #define AML_TYPE_EXEC_3A_0T_0R 0x09
0323 #define AML_TYPE_EXEC_3A_1T_1R 0x0A
0324 #define AML_TYPE_EXEC_6A_0T_1R 0x0B
0325
0326
0327 #define AML_TYPE_LITERAL 0x0C
0328 #define AML_TYPE_CONSTANT 0x0D
0329 #define AML_TYPE_METHOD_ARGUMENT 0x0E
0330 #define AML_TYPE_LOCAL_VARIABLE 0x0F
0331 #define AML_TYPE_DATA_TERM 0x10
0332
0333
0334
0335 #define AML_TYPE_METHOD_CALL 0x11
0336
0337
0338
0339 #define AML_TYPE_CREATE_FIELD 0x12
0340 #define AML_TYPE_CREATE_OBJECT 0x13
0341 #define AML_TYPE_CONTROL 0x14
0342 #define AML_TYPE_NAMED_NO_OBJ 0x15
0343 #define AML_TYPE_NAMED_FIELD 0x16
0344 #define AML_TYPE_NAMED_SIMPLE 0x17
0345 #define AML_TYPE_NAMED_COMPLEX 0x18
0346 #define AML_TYPE_RETURN 0x19
0347 #define AML_TYPE_UNDEFINED 0x1A
0348 #define AML_TYPE_BOGUS 0x1B
0349
0350
0351
0352 #define ACPI_AML_PACKAGE_TYPE1 0x40
0353 #define ACPI_AML_PACKAGE_TYPE2 0x4000
0354 #define ACPI_AML_PACKAGE_TYPE3 0x400000
0355 #define ACPI_AML_PACKAGE_TYPE4 0x40000000
0356
0357
0358
0359
0360 #define AML_CLASS_EXECUTE 0x00
0361 #define AML_CLASS_CREATE 0x01
0362 #define AML_CLASS_ARGUMENT 0x02
0363 #define AML_CLASS_NAMED_OBJECT 0x03
0364 #define AML_CLASS_CONTROL 0x04
0365 #define AML_CLASS_ASCII 0x05
0366 #define AML_CLASS_PREFIX 0x06
0367 #define AML_CLASS_INTERNAL 0x07
0368 #define AML_CLASS_RETURN_VALUE 0x08
0369 #define AML_CLASS_METHOD_CALL 0x09
0370 #define AML_CLASS_UNKNOWN 0x0A
0371
0372
0373
0374 typedef enum {
0375 MATCH_MTR = 0,
0376 MATCH_MEQ = 1,
0377 MATCH_MLE = 2,
0378 MATCH_MLT = 3,
0379 MATCH_MGE = 4,
0380 MATCH_MGT = 5
0381 } AML_MATCH_OPERATOR;
0382
0383 #define MAX_MATCH_OPERATOR 5
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397
0398 #define AML_FIELD_ACCESS_TYPE_MASK 0x0F
0399 #define AML_FIELD_LOCK_RULE_MASK 0x10
0400 #define AML_FIELD_UPDATE_RULE_MASK 0x60
0401
0402
0403
0404 typedef enum {
0405 AML_FIELD_ACCESS_ANY = 0x00,
0406 AML_FIELD_ACCESS_BYTE = 0x01,
0407 AML_FIELD_ACCESS_WORD = 0x02,
0408 AML_FIELD_ACCESS_DWORD = 0x03,
0409 AML_FIELD_ACCESS_QWORD = 0x04,
0410 AML_FIELD_ACCESS_BUFFER = 0x05
0411 } AML_ACCESS_TYPE;
0412
0413
0414
0415 typedef enum {
0416 AML_FIELD_LOCK_NEVER = 0x00,
0417 AML_FIELD_LOCK_ALWAYS = 0x10
0418 } AML_LOCK_RULE;
0419
0420
0421
0422 typedef enum {
0423 AML_FIELD_UPDATE_PRESERVE = 0x00,
0424 AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20,
0425 AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40
0426 } AML_UPDATE_RULE;
0427
0428
0429
0430
0431
0432
0433 typedef enum {
0434 AML_FIELD_ATTRIB_QUICK = 0x02,
0435 AML_FIELD_ATTRIB_SEND_RECEIVE = 0x04,
0436 AML_FIELD_ATTRIB_BYTE = 0x06,
0437 AML_FIELD_ATTRIB_WORD = 0x08,
0438 AML_FIELD_ATTRIB_BLOCK = 0x0A,
0439 AML_FIELD_ATTRIB_BYTES = 0x0B,
0440 AML_FIELD_ATTRIB_PROCESS_CALL = 0x0C,
0441 AML_FIELD_ATTRIB_BLOCK_PROCESS_CALL = 0x0D,
0442 AML_FIELD_ATTRIB_RAW_BYTES = 0x0E,
0443 AML_FIELD_ATTRIB_RAW_PROCESS_BYTES = 0x0F
0444 } AML_ACCESS_ATTRIBUTE;
0445
0446
0447
0448 #define AML_METHOD_ARG_COUNT 0x07
0449 #define AML_METHOD_SERIALIZED 0x08
0450 #define AML_METHOD_SYNC_LEVEL 0xF0
0451
0452 #endif