Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

782 lines
30 KiB

  1. /*++
  2. Copyright (c) 1993-2001 Microsoft Corporation
  3. Module Name:
  4. amlikd.h
  5. Abstract:
  6. This header file (re)defines various flags used by the amli extension. These definitions
  7. are copied from different header files in the acpi and acpi kd ext dirs.
  8. --*/
  9. #ifndef _AMLIKD_
  10. #define _AMLIKD_
  11. /*** Defn's
  12. */
  13. #define PRINTF ConPrintf
  14. #define ConPrintf dprintf
  15. #define MZERO MemZero
  16. #define ADDROF(s) GetExpression("ACPI!" s)
  17. #define AMLI_FIELD_OFFSET(t,f) AMLIGetFieldOffset("ACPI!" t, f)
  18. #define FIELDADDROF(s,t,f) (ULONG64)(ADDROF(s) + AMLI_FIELD_OFFSET(t, f))
  19. #define READMEMBYTE ReadMemByte
  20. #define READMEMWORD ReadMemWord
  21. #define READMEMDWORD ReadMemDWord
  22. #define READMEMULONGPTR ReadMemUlongPtr
  23. #define READMEMULONG64 ReadMemUlong64
  24. #define READSYMBYTE(s) ReadMemByte(ADDROF(s))
  25. #define READSYMWORD(s) ReadMemWord(ADDROF(s))
  26. #define READSYMDWORD(s) ReadMemDWord(ADDROF(s))
  27. #define READSYMULONGPTR(s) ReadMemUlong64(ADDROF(s))
  28. #define WRITEMEMBYTE(a,d) WriteMemory(a, &(d), sizeof(BYTE), NULL)
  29. #define WRITEMEMWORD(a,d) WriteMemory(a, &(d), sizeof(WORD), NULL)
  30. #define WRITEMEMDWORD(a,d) WriteMemory(a, &(d), sizeof(DWORD), NULL)
  31. #define WRITEMEMULONGPTR(a,d) WriteMemory(a, &(d), sizeof(ULONG_PTR), NULL)
  32. #define WRITESYMBYTE(s,d) WRITEMEMBYTE(ADDROF(s), d)
  33. #define WRITESYMWORD(s,d) WRITEMEMWORD(ADDROF(s), d)
  34. #define WRITESYMDWORD(s,d) WRITEMEMDWORD(ADDROF(s), d)
  35. #define WRITESYMULONGPTR(s,d) WRITEMEMULONGPTR(ADDROF(s), d)
  36. #define EXOP(op) (((op) << 8) | OP_EXT_PREFIX)
  37. #define LOCAL __cdecl
  38. #define STDCALL __stdcall
  39. #define MODNAME "AMLI"
  40. #define DBG_ERROR(x) ConPrintf(MODNAME "_DBGERR: "); \
  41. ConPrintf x; \
  42. ConPrintf("\n");
  43. #define ARG_ERROR(x) ConPrintf(MODNAME "_ARGERR: "); \
  44. ConPrintf x; \
  45. ConPrintf("\n");
  46. #define DEREF(x) ((x) = (x))
  47. #define ISLOWER(c) (((c) >= 'a') && ((c) <= 'z'))
  48. #define TOUPPER(c) ((CHAR)(ISLOWER(c)? ((c) & 0xdf): (c)))
  49. #define MEMCPY RtlCopyMemory
  50. #define MEMZERO RtlZeroMemory
  51. #define STRCPY(s1,s2) StrCpy(s1, s2, (ULONG)(-1))
  52. #define STRCPYN(s1,s2,n) StrCpy(s1, s2, (ULONG)(n))
  53. #define STRLEN(s) StrLen(s, (ULONG)(-1))
  54. #define STRCMP(s1,s2) StrCmp(s1, s2, (ULONG)(-1), TRUE)
  55. #define MAX_NAME_LEN 255
  56. #define NAMESEG_ROOT 0x5f5f5f5c // "\___"
  57. #define NAMESEG_BLANK 0x5f5f5f5f // "____"
  58. #define NAMESEG_NONE 0x00000000 // ""
  59. #define NAMESTR_ROOT "\\"
  60. #define MAX_NUM_LOCALS 8
  61. #define MAX_NUM_ARGS 7
  62. #define MAX_BRK_PTS 10
  63. #define BPF_ENABLED 0x00000001
  64. #define RESTYPE_MUTEX 1
  65. // DNS flags
  66. #define DNSF_RECURSE 0x00000001
  67. // DS flags
  68. #define DSF_VERBOSE 0x00000001
  69. // dwfDebug flags
  70. #define DBGF_IN_DEBUGGER 0x00000001
  71. #define DBGF_IN_VXDMODE 0x00000002
  72. #define DBGF_IN_KDSHELL 0x00000004
  73. #define DBGF_VERBOSE_ON 0x00000008
  74. #define DBGF_AMLTRACE_ON 0x00000010
  75. #define DBGF_TRIGGER_MODE 0x00000020
  76. #define DBGF_SINGLE_STEP 0x00000040
  77. #define DBGF_STEP_OVER 0x00000080
  78. #define DBGF_STEP_MODES (DBGF_SINGLE_STEP | DBGF_STEP_OVER)
  79. #define DBGF_TRACE_NONEST 0x00000100
  80. #define DBGF_DUMPDATA_PHYADDR 0x00000200
  81. #define DBGF_DEBUGGER_REQ 0x00001000
  82. #define DBGF_CHECKING_TRACE 0x00002000
  83. #define DBGF_ERRBREAK_ON 0x00004000
  84. #define DBGF_LOGEVENT_ON 0x00008000
  85. #define DBGF_LOGEVENT_MUTEX 0x00010000
  86. #define DBGF_DEBUG_SPEW_ON 0x00020000
  87. // dwfAMLIInit flags
  88. #define AMLIIF_INIT_BREAK 0x00000001 //break at AMLIInit completion
  89. #define AMLIIF_LOADDDB_BREAK 0x00000002 //break at LoadDDB completion
  90. #define AMLIIF_NOCHK_TABLEVER 0x80000000 //do not check table version
  91. // Error codes
  92. #define UNASMERR_NONE 0
  93. #define UNASMERR_FATAL -1
  94. #define UNASMERR_INVALID_OPCODE -2
  95. #define UNASMERR_ABORT -3
  96. // Opcode classes
  97. #define OPCLASS_INVALID 0
  98. #define OPCLASS_DATA_OBJ 1
  99. #define OPCLASS_NAME_OBJ 2
  100. #define OPCLASS_CONST_OBJ 3
  101. #define OPCLASS_CODE_OBJ 4
  102. #define OPCLASS_ARG_OBJ 5
  103. #define OPCLASS_LOCAL_OBJ 6
  104. // NameSpace object types
  105. #define NSTYPE_UNKNOWN 'U'
  106. #define NSTYPE_SCOPE 'S'
  107. #define NSTYPE_FIELDUNIT 'F'
  108. #define NSTYPE_DEVICE 'D'
  109. #define NSTYPE_EVENT 'E'
  110. #define NSTYPE_METHOD 'M'
  111. #define NSTYPE_MUTEX 'X'
  112. #define NSTYPE_OPREGION 'O'
  113. #define NSTYPE_POWERRES 'P'
  114. #define NSTYPE_PROCESSOR 'C'
  115. #define NSTYPE_THERMALZONE 'T'
  116. #define NSTYPE_OBJALIAS 'A'
  117. #define NSTYPE_BUFFFIELD 'B'
  118. // Term classes
  119. #define UTC_PNP_MACRO 0x00100000
  120. #define UTC_REF_OBJECT 0x00200000
  121. #define UTC_FIELD_MACRO 0x00400000
  122. #define UTC_DATA_OBJECT 0x00800000
  123. #define UTC_NAMED_OBJECT 0x01000000
  124. #define UTC_NAMESPACE_MODIFIER 0x02000000
  125. #define UTC_OPCODE_TYPE1 0x04000000
  126. #define UTC_OPCODE_TYPE2 0x08000000
  127. #define UTC_CONST_NAME 0x10000000
  128. #define UTC_SHORT_NAME 0x20000000
  129. #define UTC_COMPILER_DIRECTIVE 0x40000000
  130. #define UTC_KEYWORD 0x80000000
  131. #define UTC_OPCODE (UTC_OPCODE_TYPE1 | UTC_OPCODE_TYPE2 | \
  132. UTC_SHORT_NAME | UTC_CONST_NAME | \
  133. UTC_DATA_OBJECT)
  134. // Term flags
  135. #define TF_ACTION_FLIST 0x00000001
  136. #define TF_ACTION_VLIST 0x00000002
  137. #define TF_PACKAGE_LEN 0x00000004
  138. #define TF_CHANGE_CHILDSCOPE 0x00000008
  139. #define TF_DELAY_UNASM 0x00000010
  140. #define TF_FIELD_MACRO UTC_FIELD_MACRO
  141. #define TF_DATA_OBJECT UTC_DATA_OBJECT
  142. #define TF_NAMED_OBJECT UTC_NAMED_OBJECT
  143. #define TF_NAMESPACE_MODIFIER UTC_NAMESPACE_MODIFIER
  144. #define TF_OPCODE_TYPE1 UTC_OPCODE_TYPE1
  145. #define TF_OPCODE_TYPE2 UTC_OPCODE_TYPE2
  146. #define TF_CONST_NAME UTC_CONST_NAME
  147. #define TF_SHORT_NAME UTC_SHORT_NAME
  148. #define TF_COMPILER_DIRECTIVE UTC_COMPILER_DIRECTIVE
  149. #define TF_KEYWORD UTC_KEYWORD
  150. #define TF_PNP_MACRO UTC_PNP_MACRO
  151. #define TF_OBJECT_LIST (UTC_NAMED_OBJECT | UTC_NAMESPACE_MODIFIER)
  152. #define TF_CODE_LIST (UTC_OPCODE_TYPE1 | UTC_OPCODE_TYPE2)
  153. #define TF_DATA_LIST 0x00010000
  154. #define TF_FIELD_LIST 0x00020000
  155. #define TF_BYTE_LIST 0x00040000
  156. #define TF_DWORD_LIST 0x00080000
  157. #define TF_PACKAGE_LIST (UTC_DATA_OBJECT | UTC_SHORT_NAME | \
  158. UTC_CONST_NAME)
  159. #define TF_ALL_LISTS (TF_DATA_OBJECT | TF_NAMED_OBJECT | \
  160. TF_NAMESPACE_MODIFIER | TF_OPCODE_TYPE1 | \
  161. TF_OPCODE_TYPE2 | TF_SHORT_NAME | \
  162. TF_CONST_NAME | TF_COMPILER_DIRECTIVE | \
  163. TF_DATA_LIST | TF_PACKAGE_LIST | \
  164. TF_FIELD_LIST | TF_PNP_MACRO | TF_BYTE_LIST |\
  165. TF_DWORD_LIST)
  166. // HEAP
  167. #define SIG_HEAP 'PAEH'
  168. #define SIG_SCOPE 'POCS'
  169. #define SIG_CALL 'LLAC'
  170. //CTXT Flags
  171. #define SIG_CTXT 'TXTC'
  172. #define CTXTF_TIMER_PENDING 0x00000001
  173. #define CTXTF_TIMER_DISPATCH 0x00000002
  174. #define CTXTF_TIMEOUT 0x00000004
  175. #define CTXTF_READY 0x00000008
  176. #define CTXTF_RUNNING 0x00000010
  177. #define CTXTF_NEED_CALLBACK 0x00000020
  178. #define CTXTF_IN_READYQ 0x00000040
  179. #define CTXTF_NEST_EVAL 0x00000080
  180. #define CTXTF_ASYNC_EVAL 0x00000100
  181. /*** Opcode values
  182. */
  183. #define OP_NONE 0xffffffff //not a valid opcode
  184. #define OP_ZERO 0x00
  185. #define OP_ONE 0x01
  186. #define OP_ALIAS 0x06
  187. #define OP_NAME 0x08
  188. #define OP_BYTE 0x0a
  189. #define OP_WORD 0x0b
  190. #define OP_DWORD 0x0c
  191. #define OP_STRING 0x0d
  192. #define OP_SCOPE 0x10
  193. #define OP_BUFFER 0x11
  194. #define OP_PACKAGE 0x12
  195. #define OP_METHOD 0x14
  196. #define OP_DUAL_NAME_PREFIX 0x2e // '.'
  197. #define OP_MULTI_NAME_PREFIX 0x2f // '/'
  198. #define OP_EXT_PREFIX 0x5b // '['
  199. #define OP_ROOT_PREFIX 0x5c // '\'
  200. #define OP_PARENT_PREFIX 0x5e // '^'
  201. #define OP_LOCAL0 0x60 // '`'
  202. #define OP_LOCAL1 0x61 // 'a'
  203. #define OP_LOCAL2 0x62 // 'b'
  204. #define OP_LOCAL3 0x63 // 'c'
  205. #define OP_LOCAL4 0x64 // 'd'
  206. #define OP_LOCAL5 0x65 // 'e'
  207. #define OP_LOCAL6 0x66 // 'f'
  208. #define OP_LOCAL7 0x67 // 'g'
  209. #define OP_ARG0 0x68 // 'h'
  210. #define OP_ARG1 0x69 // 'i'
  211. #define OP_ARG2 0x6a // 'j'
  212. #define OP_ARG3 0x6b // 'k'
  213. #define OP_ARG4 0x6c // 'l'
  214. #define OP_ARG5 0x6d // 'm'
  215. #define OP_ARG6 0x6e // 'n'
  216. #define OP_STORE 0x70 // 'p'
  217. #define OP_REFOF 0x71
  218. #define OP_ADD 0x72
  219. #define OP_CONCAT 0x73
  220. #define OP_SUBTRACT 0x74
  221. #define OP_INCREMENT 0x75
  222. #define OP_DECREMENT 0x76
  223. #define OP_MULTIPLY 0x77
  224. #define OP_DIVIDE 0x78
  225. #define OP_SHIFTL 0x79
  226. #define OP_SHIFTR 0x7a
  227. #define OP_AND 0x7b
  228. #define OP_NAND 0x7c
  229. #define OP_OR 0x7d
  230. #define OP_NOR 0x7e
  231. #define OP_XOR 0x7f
  232. #define OP_NOT 0x80
  233. #define OP_FINDSETLBIT 0x81
  234. #define OP_FINDSETRBIT 0x82
  235. #define OP_DEREFOF 0x83
  236. #define OP_NOTIFY 0x86
  237. #define OP_SIZEOF 0x87
  238. #define OP_INDEX 0x88
  239. #define OP_MATCH 0x89
  240. #define OP_DWORDFIELD 0x8a
  241. #define OP_WORDFIELD 0x8b
  242. #define OP_BYTEFIELD 0x8c
  243. #define OP_BITFIELD 0x8d
  244. #define OP_OBJTYPE 0x8e
  245. #define OP_LAND 0x90
  246. #define OP_LOR 0x91
  247. #define OP_LNOT 0x92
  248. #define OP_LNOTEQ 0x9392
  249. #define OP_LLEQ 0x9492
  250. #define OP_LGEQ 0x9592
  251. #define OP_LEQ 0x93
  252. #define OP_LG 0x94
  253. #define OP_LL 0x95
  254. #define OP_IF 0xa0
  255. #define OP_ELSE 0xa1
  256. #define OP_WHILE 0xa2
  257. #define OP_NOP 0xa3
  258. #define OP_RETURN 0xa4
  259. #define OP_BREAK 0xa5
  260. #define OP_OSI 0xca
  261. #define OP_BREAKPOINT 0xcc
  262. #define OP_ONES 0xff
  263. #define EXOP_MUTEX 0x01
  264. #define EXOP_EVENT 0x02
  265. #define EXOP_CONDREFOF 0x12
  266. #define EXOP_CREATEFIELD 0x13
  267. #define EXOP_LOAD 0x20
  268. #define EXOP_STALL 0x21
  269. #define EXOP_SLEEP 0x22
  270. #define EXOP_ACQUIRE 0x23
  271. #define EXOP_SIGNAL 0x24
  272. #define EXOP_WAIT 0x25
  273. #define EXOP_RESET 0x26
  274. #define EXOP_RELEASE 0x27
  275. #define EXOP_FROMBCD 0x28
  276. #define EXOP_TOBCD 0x29
  277. #define EXOP_UNLOAD 0x2a
  278. #define EXOP_REVISION 0x30
  279. #define EXOP_DEBUG 0x31
  280. #define EXOP_FATAL 0x32
  281. #define EXOP_OPREGION 0x80
  282. #define EXOP_FIELD 0x81
  283. #define EXOP_DEVICE 0x82
  284. #define EXOP_PROCESSOR 0x83
  285. #define EXOP_POWERRES 0x84
  286. #define EXOP_THERMALZONE 0x85
  287. #define EXOP_IDXFIELD 0x86
  288. #define EXOP_BANKFIELD 0x87
  289. #define OP_MUTEX EXOP(EXOP_MUTEX)
  290. #define OP_EVENT EXOP(EXOP_EVENT)
  291. #define OP_CONDREFOF EXOP(EXOP_CONDREFOF)
  292. #define OP_CREATEFIELD EXOP(EXOP_CREATEFIELD)
  293. #define OP_LOAD EXOP(EXOP_LOAD)
  294. #define OP_STALL EXOP(EXOP_STALL)
  295. #define OP_SLEEP EXOP(EXOP_SLEEP)
  296. #define OP_ACQUIRE EXOP(EXOP_ACQUIRE)
  297. #define OP_SIGNAL EXOP(EXOP_SIGNAL)
  298. #define OP_WAIT EXOP(EXOP_WAIT)
  299. #define OP_RESET EXOP(EXOP_RESET)
  300. #define OP_RELEASE EXOP(EXOP_RELEASE)
  301. #define OP_FROMBCD EXOP(EXOP_FROMBCD)
  302. #define OP_TOBCD EXOP(EXOP_TOBCD)
  303. #define OP_UNLOAD EXOP(EXOP_UNLOAD)
  304. #define OP_REVISION EXOP(EXOP_REVISION)
  305. #define OP_DEBUG EXOP(EXOP_DEBUG)
  306. #define OP_FATAL EXOP(EXOP_FATAL)
  307. #define OP_OPREGION EXOP(EXOP_OPREGION)
  308. #define OP_FIELD EXOP(EXOP_FIELD)
  309. #define OP_DEVICE EXOP(EXOP_DEVICE)
  310. #define OP_PROCESSOR EXOP(EXOP_PROCESSOR)
  311. #define OP_POWERRES EXOP(EXOP_POWERRES)
  312. #define OP_THERMALZONE EXOP(EXOP_THERMALZONE)
  313. #define OP_IDXFIELD EXOP(EXOP_IDXFIELD)
  314. #define OP_BANKFIELD EXOP(EXOP_BANKFIELD)
  315. /*** Field flags
  316. */
  317. #define ACCTYPE_MASK 0x0f
  318. #define ACCTYPE_ANY 0x00 //AnyAcc
  319. #define ACCTYPE_BYTE 0x01 //ByteAcc
  320. #define ACCTYPE_WORD 0x02 //WordAcc
  321. #define ACCTYPE_DWORD 0x03 //DWordAcc
  322. #define ACCTYPE_BLOCK 0x04 //BlockAcc
  323. #define ACCTYPE_SMBSENDRECV 0x05 //SMBSendRecvAcc
  324. #define ACCTYPE_SMBQUICK 0x06 //SMBQuickAcc
  325. #define LOCKRULE_MASK 0x10
  326. #define LOCKRULE_NOLOCK 0x00 //NoLock
  327. #define LOCKRULE_LOCK 0x10 //Lock
  328. #define UPDATERULE_MASK 0x60
  329. #define UPDATERULE_PRESERVE 0x00 //Preserve
  330. #define UPDATERULE_WRITEASONES 0x20 //WriteAsOnes
  331. #define UPDATERULE_WRITEASZEROS 0x40 //WriteAsZeros
  332. //
  333. // Returns 1, 2 or 4 for BYTE, WORD or DWORD respectively and returns 1 for
  334. // any other sizes.
  335. //
  336. #define ACCSIZE(f) (((((f) & ACCTYPE_MASK) >= ACCTYPE_BYTE) && \
  337. (((f) & ACCTYPE_MASK) <= ACCTYPE_DWORD))? \
  338. (1 << (((f) & ACCTYPE_MASK) - 1)): 1)
  339. /*** Operation region space
  340. */
  341. #define REGSPACE_MEM 0 //SystemMemory
  342. #define REGSPACE_IO 1 //SystemIO
  343. #define REGSPACE_PCICFG 2 //PCI_Config
  344. #define REGSPACE_EC 3 //EmbeddedControl
  345. #define REGSPACE_SMB 4 //SMBus
  346. #define REGSPACE_CMOSCFG 5 //Cmos_Config
  347. #define REGSPACE_PCIBARTARGET 6 //PCIBARTarget
  348. /*** Method flags
  349. */
  350. #define METHOD_NUMARG_MASK 0x07
  351. #define METHOD_SYNCMASK 0x08
  352. #define METHOD_NOTSERIALIZED 0x00
  353. #define METHOD_SERIALIZED 0x08
  354. /*** Match operation values
  355. */
  356. #define MTR 0
  357. #define MEQ 1
  358. #define MLE 2
  359. #define MLT 3
  360. #define MGE 4
  361. #define MGT 5
  362. /*** IRQ Flags for short descriptor
  363. */
  364. #define _HE 0x01 //ActiveHigh, EdgeTrigger
  365. #define _LL 0x08 //ActiveLow, LevelTrigger
  366. #define _SHR 0x10 //Shared
  367. #define _EXC 0x00 //Exclusive
  368. /*** IRQ Flags for long descriptor
  369. */
  370. #define $EDG 0x02 //EdgeTrigger
  371. #define $LVL 0x00 //LevelTrigger
  372. #define $LOW 0x04 //ActiveLow
  373. #define $HGH 0x00 //ActiveHigh
  374. #define $SHR 0x08 //Shared
  375. #define $EXC 0x00 //Exclusive
  376. /*** DMA Flags
  377. */
  378. #define X8 0x00 //Transfer8
  379. #define X816 0x01 //Transfer8_16
  380. #define X16 0x02 //Transfer16
  381. #define NOBM 0x00 //NotBusMaster
  382. #define BM 0x04 //BusMaster
  383. #define COMP 0x00 //Compatibility
  384. #define TYPA 0x20 //TypeA
  385. #define TYPB 0x40 //TypeB
  386. #define TYPF 0x60 //TypeF
  387. /*** IO Flags
  388. */
  389. #define DC16 0x01 //Decode16
  390. #define DC10 0x00 //Decode10
  391. /*** Memory Flags
  392. */
  393. #define _RW 0x01 //Read/Write
  394. #define _ROM 0x00 //Read only
  395. /*** Address Space Descriptor General Flags
  396. */
  397. #define RCS 0x01 //Resource Consumer
  398. #define RPD 0x00 //Resource Producer
  399. #define BSD 0x02 //Bridge Subtractive Decode
  400. #define BPD 0x00 //Bridge Positive Decode
  401. #define MIF 0x04 //Min address is fixed
  402. #define NMIF 0x00 //Min address is not fixed
  403. #define MAF 0x08 //Max address is fixed
  404. #define NMAF 0x00 //Max address is not fixed
  405. /*** Memory Address Space Flags
  406. */
  407. #define CACH 0x02 //Cacheable
  408. #define WRCB 0x04 //WriteCombining
  409. #define PREF 0x06 //Prefetchable
  410. #define NCAC 0x00 //Non-Cacheable
  411. /*** IO Address Space Flags
  412. */
  413. #define ISA 0x02 //ISAOnly ranges
  414. #define NISA 0x01 //NonISAOnly ranges
  415. #define ERNG 0x03 //Entire range
  416. #define MAX_ARGS 7
  417. #define MAX_NSPATH_LEN 1275 //approx. 255*4 + 255 (255 NameSegs)
  418. //
  419. // N: NameStr
  420. // O: DataObj (num, string, buffer, package)
  421. // K: Keyword (e.g. NoLock, ByteAcc etc.)
  422. // D: DWord integer
  423. // W: Word integer
  424. // B: Byte integer
  425. // U: Numeric (any size integer)
  426. // S: SuperName (NameStr + Localx + Argx + Ret)
  427. // C: Opcode
  428. // Z: ASCIIZ string
  429. //
  430. #define AF TF_ACTION_FLIST //process after fixed list is parsed
  431. #define AV TF_ACTION_VLIST //process after variable list is parsed
  432. #define LN TF_PACKAGE_LEN //term requires package length
  433. #define CC TF_CHANGE_CHILDSCOPE //change to child scope
  434. #define DL TF_DATA_LIST //term expects buffer data list
  435. #define PL TF_PACKAGE_LIST //term expects package list
  436. #define FL TF_FIELD_LIST //term expects FieldList
  437. #define OL TF_OBJECT_LIST //term expects ObjectList
  438. #define LL TF_COMPILER_DIRECTIVE //term expects compiler directives
  439. #define CL TF_CODE_LIST //term expects CodeList
  440. #define AL TF_ALL_LISTS //term expects anything
  441. #define ML TF_PNP_MACRO //term expects PNPMacro
  442. #define BL TF_BYTE_LIST //term expects ByteList
  443. #define DD TF_DWORD_LIST //term expects DWordList
  444. #define SK TF_DELAY_UNASM //term cannot be unasmed on the first pass
  445. #define CD UTC_COMPILER_DIRECTIVE
  446. #define FM UTC_FIELD_MACRO
  447. #define CN UTC_CONST_NAME
  448. #define SN UTC_SHORT_NAME
  449. #define NS UTC_NAMESPACE_MODIFIER
  450. #define DO UTC_DATA_OBJECT
  451. #define KW UTC_KEYWORD
  452. #define NO UTC_NAMED_OBJECT
  453. #define C1 UTC_OPCODE_TYPE1
  454. #define C2 UTC_OPCODE_TYPE2
  455. #define RO UTC_REF_OBJECT
  456. #define PM UTC_PNP_MACRO
  457. #define UNK OBJTYPE_UNKNOWN
  458. #define INT OBJTYPE_INTDATA
  459. #define STR OBJTYPE_STRDATA
  460. #define BUF OBJTYPE_BUFFDATA
  461. #define PKG OBJTYPE_PKGDATA
  462. #define FDU OBJTYPE_FIELDUNIT
  463. #define DEV OBJTYPE_DEVICE
  464. #define EVT OBJTYPE_EVENT
  465. #define MET OBJTYPE_METHOD
  466. #define MUT OBJTYPE_MUTEX
  467. #define OPR OBJTYPE_OPREGION
  468. #define PWR OBJTYPE_POWERRES
  469. #define THM OBJTYPE_THERMALZONE
  470. #define BFD OBJTYPE_BUFFFIELD
  471. #define DDB OBJTYPE_DDBHANDLE
  472. //
  473. // Field flags
  474. //
  475. #define AANY (ACCTYPE_ANY | (ACCTYPE_MASK << 8))
  476. #define AB (ACCTYPE_BYTE | (ACCTYPE_MASK << 8))
  477. #define AW (ACCTYPE_WORD | (ACCTYPE_MASK << 8))
  478. #define ADW (ACCTYPE_DWORD | (ACCTYPE_MASK << 8))
  479. #define ABLK (ACCTYPE_BLOCK | (ACCTYPE_MASK << 8))
  480. #define ASSR (ACCTYPE_SMBSENDRECV | (ACCTYPE_MASK << 8))
  481. #define ASQ (ACCTYPE_SMBQUICK | (ACCTYPE_MASK << 8))
  482. #define LK (LOCKRULE_LOCK | (LOCKRULE_MASK << 8))
  483. #define NOLK (LOCKRULE_NOLOCK | (LOCKRULE_MASK << 8))
  484. #define PSRV (UPDATERULE_PRESERVE | (UPDATERULE_MASK << 8))
  485. #define WA1S (UPDATERULE_WRITEASONES | (UPDATERULE_MASK << 8))
  486. #define WA0S (UPDATERULE_WRITEASZEROS | (UPDATERULE_MASK << 8))
  487. //
  488. // Operation region space
  489. //
  490. #define MEM (REGSPACE_MEM | 0xff00)
  491. #define IO (REGSPACE_IO | 0xff00)
  492. #define CFG (REGSPACE_PCICFG | 0xff00)
  493. #define EC (REGSPACE_EC | 0xff00)
  494. #define SMB (REGSPACE_SMB | 0xff00)
  495. //
  496. // Method flags
  497. //
  498. #define SER (METHOD_SERIALIZED | (METHOD_SYNCMASK << 8))
  499. #define NOSER (METHOD_NOTSERIALIZED | (METHOD_SYNCMASK << 8))
  500. //
  501. // Match operation values
  502. //
  503. #define OMTR (MTR | 0xff00)
  504. #define OMEQ (MEQ | 0xff00)
  505. #define OMLE (MLE | 0xff00)
  506. #define OMLT (MLT | 0xff00)
  507. #define OMGE (MGE | 0xff00)
  508. #define OMGT (MGT | 0xff00)
  509. #define INVALID OPCLASS_INVALID
  510. #define DATAOBJ OPCLASS_DATA_OBJ
  511. #define NAMEOBJ OPCLASS_NAME_OBJ
  512. #define CONSTOBJ OPCLASS_CONST_OBJ
  513. #define CODEOBJ OPCLASS_CODE_OBJ
  514. #define ARGOBJ OPCLASS_ARG_OBJ
  515. #define LOCALOBJ OPCLASS_LOCAL_OBJ
  516. // Error codes
  517. #define ARGERR_NONE 0
  518. #define ARGERR_SEP_NOT_FOUND -1
  519. #define ARGERR_INVALID_NUMBER -2
  520. #define ARGERR_INVALID_ARG -3
  521. #define ARGERR_ASSERT_FAILED -4
  522. // Command argument flags
  523. #define AF_NOI 0x00000001 //NoIgnoreCase
  524. #define AF_SEP 0x00000002 //require separator
  525. // Command argument types
  526. #define AT_END 0 //end marker of arg table
  527. #define AT_STRING 1
  528. #define AT_NUM 2
  529. #define AT_ENABLE 3
  530. #define AT_DISABLE 4
  531. #define AT_ACTION 5
  532. // Debugger error codes
  533. #define DBGERR_NONE 0
  534. #define DBGERR_QUIT -1
  535. #define DBGERR_INVALID_CMD -2
  536. #define DBGERR_PARSE_ARGS -3
  537. #define DBGERR_CMD_FAILED -4
  538. #define DBGERR_INTERNAL_ERR -5
  539. // dwfFlags for AMLIGetNameSpaceObject
  540. #define NSF_LOCAL_SCOPE 0x00000001
  541. // dwfNS local flags
  542. #define NSF_EXIST_OK 0x00010000 //for CreateNameSpaceObject
  543. #define NSF_WARN_NOTFOUND 0x80000000 //for GetNameSpaceObject
  544. /*** Type definitions
  545. */
  546. typedef CHAR *PSZ;
  547. typedef ULONG NAMESEG;
  548. typedef UCHAR *PUCHAR;
  549. typedef struct _cmdarg CMDARG;
  550. typedef CMDARG *PCMDARG;
  551. typedef LONG (LOCAL *PFNARG)(PCMDARG, PSZ, ULONG, ULONG);
  552. struct _cmdarg
  553. {
  554. PSZ pszArgID; //argument ID string
  555. ULONG dwArgType; //AT_*
  556. ULONG dwfArg; //AF_*
  557. PVOID pvArgData; //AT_END: none
  558. //AT_STRING: PPSZ - ptr. to string ptr.
  559. //AT_NUM: PLONG - ptr. to number
  560. //AT_ENABLE: PULONG - ptr. to flags
  561. //AT_DISABLE: PULONG - ptr. to flags
  562. //AT_ACTION: none
  563. ULONG dwArgParam; //AT_END: none
  564. //AT_STRING: none
  565. //AT_NUM: base
  566. //AT_ENABLE: flag bit mask
  567. //AT_DISABLE: flag bit mask
  568. //AT_ACTION: none
  569. PFNARG pfnArg; //ptr. to argument verification function or
  570. // action function if AT_ACTION
  571. };
  572. typedef struct _dbgcmd
  573. {
  574. PSZ pszCmd;
  575. ULONG dwfCmd;
  576. PCMDARG pArgTable;
  577. PFNARG pfnCmd;
  578. } DBGCMD, *PDBGCMD;
  579. typedef struct _aslterm
  580. {
  581. PSZ pszID;
  582. ULONG dwfTermClass;
  583. ULONG dwTermData;
  584. ULONG dwOpcode;
  585. PSZ pszUnAsmArgTypes;
  586. PSZ pszArgActions;
  587. ULONG dwfTerm;
  588. } ASLTERM, *PASLTERM;
  589. typedef struct _opmap
  590. {
  591. UCHAR bExOp;
  592. UCHAR bOpClass;
  593. } OPMAP, *POPMAP;
  594. //dwDataType values
  595. typedef enum _OBJTYPES {
  596. OBJTYPE_UNKNOWN = 0,
  597. OBJTYPE_INTDATA,
  598. OBJTYPE_STRDATA,
  599. OBJTYPE_BUFFDATA,
  600. OBJTYPE_PKGDATA,
  601. OBJTYPE_FIELDUNIT,
  602. OBJTYPE_DEVICE,
  603. OBJTYPE_EVENT,
  604. OBJTYPE_METHOD,
  605. OBJTYPE_MUTEX,
  606. OBJTYPE_OPREGION,
  607. OBJTYPE_POWERRES,
  608. OBJTYPE_PROCESSOR,
  609. OBJTYPE_THERMALZONE,
  610. OBJTYPE_BUFFFIELD,
  611. OBJTYPE_DDBHANDLE,
  612. OBJTYPE_DEBUG,
  613. //These are internal object types (not to be exported to the ASL code)
  614. OBJTYPE_INTERNAL = 0x80,
  615. OBJTYPE_OBJALIAS = 0x80,
  616. OBJTYPE_DATAALIAS,
  617. OBJTYPE_BANKFIELD,
  618. OBJTYPE_FIELD,
  619. OBJTYPE_INDEXFIELD,
  620. OBJTYPE_DATA,
  621. OBJTYPE_DATAFIELD,
  622. OBJTYPE_DATAOBJ,
  623. } OBJTYPES;
  624. /*** Local function prototypes
  625. */
  626. LONG LOCAL AMLIDbgBC(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  627. LONG LOCAL AMLIDbgBD(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  628. LONG LOCAL AMLIDbgBE(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  629. LONG LOCAL AMLIDbgBL(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  630. LONG LOCAL AMLIDbgBP(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  631. LONG LOCAL AddBrkPt(ULONG64 uipBrkPtAddr);
  632. LONG LOCAL ClearBrkPt(int iBrkPt);
  633. LONG LOCAL SetBrkPtState(int iBrkPt, BOOLEAN fEnable);
  634. LONG LOCAL EnableDisableBP(PSZ pszArg, BOOLEAN fEnable, ULONG dwArgNum);
  635. VOID LOCAL PrintSymbol(ULONG64 uip);
  636. LONG LOCAL AMLIDbgCL(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  637. LONG LOCAL AMLIDbgDebugger(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  638. LONG LOCAL AMLIDbgDH(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  639. LONG LOCAL DumpHeap(ULONG64 uipHeap, ULONG dwSize);
  640. LONG LOCAL AMLIDbgDL(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  641. LONG LOCAL AMLIDbgDNS(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  642. LONG LOCAL DumpNSObj(PSZ pszPath, BOOLEAN fRecursive);
  643. VOID LOCAL DumpNSTree(PULONG64 pnsObj, ULONG dwLevel);
  644. LONG LOCAL AMLIDbgDO(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  645. LONG LOCAL AMLIDbgDS(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  646. LONG LOCAL DumpStack(ULONG64 uipCtxt, BOOLEAN fVerbose);
  647. LONG LOCAL AMLIDbgFind(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  648. LONG LOCAL AMLIDbgLC(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  649. LONG LOCAL AMLIDbgLN(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  650. LONG LOCAL AMLIDbgP(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  651. LONG LOCAL AMLIDbgR(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  652. LONG LOCAL AMLIDbgSet(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  653. LONG LOCAL AMLIDbgU(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  654. BOOLEAN LOCAL FindNSObj(NAMESEG dwName, PULONG64 pnsRoot);
  655. PSZ LOCAL GetObjectPath(PULONG64 pns);
  656. LONG LOCAL DumpCtxt(ULONG64 uipCtxt);
  657. PSZ LOCAL GetObjAddrPath(ULONG64 uipns);
  658. VOID LOCAL AMLIDumpObject(PULONG64 pdata, PSZ pszName, int iLevel);
  659. LONG LOCAL AMLITraceEnable(BOOL fEnable);
  660. PSZ LOCAL AMLIGetObjectTypeName(ULONG dwObjType);
  661. PSZ LOCAL GetRegionSpaceName(UCHAR bRegionSpace);
  662. BOOLEAN LOCAL FindObjSymbol(ULONG64 uipObj, PULONG64 puipns, PULONG pdwOffset);
  663. VOID LOCAL PrintBuffData(PUCHAR pb, ULONG dwLen);
  664. BOOLEAN LOCAL IsNumber(PSZ pszStr, ULONG dwBase, PULONG64 puipValue);
  665. LONG LOCAL DbgParseArgs(PCMDARG ArgTable, PULONG pdwNumArgs, PULONG pdwNonSWArgs, PSZ pszTokenSeps);
  666. LONG LOCAL DbgParseOneArg(PCMDARG ArgTable, PSZ psz, ULONG dwArgNum, PULONG pdwNonSWArgs);
  667. PCMDARG LOCAL DbgMatchArg(PCMDARG ArgTable, PSZ *ppsz, PULONG pdwNonSWArgs);
  668. VOID MemZero(ULONG64 uipAddr, ULONG dwSize);
  669. BYTE ReadMemByte(ULONG64 uipAddr);
  670. WORD ReadMemWord(ULONG64 uipAddr);
  671. DWORD ReadMemDWord(ULONG64 uipAddr);
  672. PULONG64 LOCAL GetObjBuff(ULONG64 ObjData);
  673. LONG LOCAL GetNSObj(PSZ pszObjPath, PULONG64 pnsScope, PULONG64 puipns, PULONG64 pns, ULONG dwfNS);
  674. PSZ LOCAL NameSegString(ULONG dwNameSeg);
  675. VOID STDCALL AMLIDbgExecuteCmd(PSZ pszCmd);
  676. LONG LOCAL AMLIDbgHelp(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
  677. LONG LOCAL EvalExpr(PSZ pszArg, PULONG64 puipValue, BOOLEAN *pfPhysical, PULONG64 puipns, PULONG pdwOffset);
  678. PSZ LOCAL StrCat(PSZ pszDst, PSZ pszSrc, ULONG n);
  679. ULONG LOCAL StrLen(PSZ psz, ULONG n);
  680. LONG LOCAL StrCmp(PSZ psz1, PSZ psz2, ULONG n, BOOLEAN fMatchCase);
  681. PSZ LOCAL StrCpy(PSZ pszDst, PSZ pszSrc, ULONG n);
  682. ULONG64 ReadMemUlong64(ULONG64 uipAddr);
  683. ULONG64 AMLIUtilStringToUlong64(PSZ String, PSZ *End, ULONG Base);
  684. BOOL GetPULONG64(IN PCHAR String, IN PULONG64 Address);
  685. ULONG AMLIGetFieldOffset(IN PCHAR StructName, IN PCHAR MemberName);
  686. LONG LOCAL UnAsmScope(PUCHAR *ppbOp, PUCHAR pbEnd, ULONG64 uipbOp, PULONG64 pnsScope, int iLevel, int icLines);
  687. VOID LOCAL Indent(PUCHAR pbOp, int iLevel);
  688. LONG LOCAL UnAsmOpcode(PUCHAR *ppbOp);
  689. UCHAR LOCAL FindOpClass(UCHAR bOp, POPMAP pOpTable);
  690. LONG LOCAL UnAsmDataObj(PUCHAR *ppbOp);
  691. LONG LOCAL UnAsmNameObj(PUCHAR *ppbOp, PULONG64 pns, char c);
  692. LONG LOCAL UnAsmNameTail(PUCHAR *ppbOp, PSZ pszBuff, int iLen);
  693. LONG LOCAL UnAsmTermObj(PASLTERM pterm, PUCHAR *ppbOp);
  694. LONG LOCAL UnAsmArgs(PSZ pszUnAsmArgTypes, PSZ pszArgActions, PUCHAR *ppbOp, PULONG64 pns);
  695. LONG LOCAL UnAsmSuperName(PUCHAR *ppbOp);
  696. LONG LOCAL UnAsmDataList(PUCHAR *ppbOp, PUCHAR pbEnd);
  697. LONG LOCAL UnAsmPkgList(PUCHAR *ppbOp, PUCHAR pbEnd);
  698. LONG LOCAL UnAsmFieldList(PUCHAR *ppbOp, PUCHAR pbEnd);
  699. LONG LOCAL UnAsmField(PUCHAR *ppbOp, PULONG pdwBitPos);
  700. PASLTERM LOCAL FindOpTerm(ULONG dwOpcode);
  701. ULONG LOCAL ParsePackageLen(PUCHAR *ppbOp, PUCHAR *ppbOpNext);
  702. PASLTERM LOCAL FindKeywordTerm(char cKWGroup, UCHAR bData);
  703. #endif //_AMLIKD_