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.

538 lines
26 KiB

  1. /*++
  2. Copyright (c) 1997 Microsoft Corporation
  3. Module Name:
  4. data.c
  5. Abstract:
  6. This file contains all of the data required by the unassembler
  7. Author:
  8. Based on code by Mike Tsang (MikeTs)
  9. Stephane Plante (Splante)
  10. Environment:
  11. User mode only
  12. Revision History:
  13. --*/
  14. #include "pch.h"
  15. //
  16. // N: NameStr
  17. // O: DataObj (num, string, buffer, package)
  18. // K: Keyword (e.g. NoLock, ByteAcc etc.)
  19. // D: DWord integer
  20. // W: Word integer
  21. // B: Byte integer
  22. // U: Numeric (any size integer)
  23. // S: SuperName (NameStr + Localx + Argx + Ret)
  24. // C: Opcode
  25. // Z: ASCIIZ string
  26. //
  27. #define AF TF_ACTION_FLIST //process after fixed list is parsed
  28. #define AV TF_ACTION_VLIST //process after variable list is parsed
  29. #define LN TF_PACKAGE_LEN //term requires package length
  30. #define CC TF_CHANGE_CHILDSCOPE //change to child scope
  31. #define DL TF_DATA_LIST //term expects buffer data list
  32. #define PL TF_PACKAGE_LIST //term expects package list
  33. #define FL TF_FIELD_LIST //term expects FieldList
  34. #define OL TF_OBJECT_LIST //term expects ObjectList
  35. #define LL TF_COMPILER_DIRECTIVE //term expects compiler directives
  36. #define CL TF_CODE_LIST //term expects CodeList
  37. #define AL TF_ALL_LISTS //term expects anything
  38. #define ML TF_PNP_MACRO //term expects PNPMacro
  39. #define BL TF_BYTE_LIST //term expects ByteList
  40. #define DD TF_DWORD_LIST //term expects DWordList
  41. #define SK TF_DELAY_UNASM //term cannot be unasmed on the first pass
  42. #define CD UTC_COMPILER_DIRECTIVE
  43. #define FM UTC_FIELD_MACRO
  44. #define CN UTC_CONST_NAME
  45. #define SN UTC_SHORT_NAME
  46. #define NS UTC_NAMESPACE_MODIFIER
  47. #define DO UTC_DATA_OBJECT
  48. #define KW UTC_KEYWORD
  49. #define NO UTC_NAMED_OBJECT
  50. #define C1 UTC_OPCODE_TYPE1
  51. #define C2 UTC_OPCODE_TYPE2
  52. #define RO UTC_REF_OBJECT
  53. #define PM UTC_PNP_MACRO
  54. #define UNK OBJTYPE_UNKNOWN
  55. #define INT OBJTYPE_INTDATA
  56. #define STR OBJTYPE_STRDATA
  57. #define BUF OBJTYPE_BUFFDATA
  58. #define PKG OBJTYPE_PKGDATA
  59. #define FDU OBJTYPE_FIELDUNIT
  60. #define DEV OBJTYPE_DEVICE
  61. #define EVT OBJTYPE_EVENT
  62. #define MET OBJTYPE_METHOD
  63. #define MUT OBJTYPE_MUTEX
  64. #define OPR OBJTYPE_OPREGION
  65. #define PWR OBJTYPE_POWERRES
  66. #define THM OBJTYPE_THERMALZONE
  67. #define BFD OBJTYPE_BUFFFIELD
  68. #define DDB OBJTYPE_DDBHANDLE
  69. //
  70. // Field flags
  71. //
  72. #define AANY (ACCTYPE_ANY | (ACCTYPE_MASK << 8))
  73. #define AB (ACCTYPE_BYTE | (ACCTYPE_MASK << 8))
  74. #define AW (ACCTYPE_WORD | (ACCTYPE_MASK << 8))
  75. #define ADW (ACCTYPE_DWORD | (ACCTYPE_MASK << 8))
  76. #define AQW (ACCTYPE_QWORD | (ACCTYPE_MASK << 8))
  77. #define ABFR (ACCTYPE_BUFFER | (ACCTYPE_MASK << 8))
  78. #define LK (LOCKRULE_LOCK | (LOCKRULE_MASK << 8))
  79. #define NOLK (LOCKRULE_NOLOCK | (LOCKRULE_MASK << 8))
  80. #define PSRV (UPDATERULE_PRESERVE | (UPDATERULE_MASK << 8))
  81. #define WA1S (UPDATERULE_WRITEASONES | (UPDATERULE_MASK << 8))
  82. #define WA0S (UPDATERULE_WRITEASZEROS | (UPDATERULE_MASK << 8))
  83. //
  84. // AccessAttribute
  85. //
  86. #define SMBQ 0x02
  87. #define SMBS 0x04
  88. #define SMBB 0x06
  89. #define SMBW 0x08
  90. #define SMBK 0x0a
  91. #define SMBP 0x0c
  92. #define SMBC 0x0d
  93. //
  94. // Operation region space
  95. //
  96. #define MEM (REGSPACE_MEM | 0xff00)
  97. #define IO (REGSPACE_IO | 0xff00)
  98. #define CFG (REGSPACE_PCICFG | 0xff00)
  99. #define EC (REGSPACE_EC | 0xff00)
  100. #define SMB (REGSPACE_SMB | 0xff00)
  101. //
  102. // Method flags
  103. //
  104. #define SER (METHOD_SERIALIZED | (METHOD_SYNCMASK << 8))
  105. #define NOSER (METHOD_NOTSERIALIZED | (METHOD_SYNCMASK << 8))
  106. //
  107. // Match operation values
  108. //
  109. #define OMTR (MTR | 0xff00)
  110. #define OMEQ (MEQ | 0xff00)
  111. #define OMLE (MLE | 0xff00)
  112. #define OMLT (MLT | 0xff00)
  113. #define OMGE (MGE | 0xff00)
  114. #define OMGT (MGT | 0xff00)
  115. ASLTERM TermTable[] =
  116. {
  117. "DefinitionBlock", CD, 0, OP_NONE, NULL, NULL, OL|CL|LL|AF|AV,
  118. "Include", CD, 0, OP_NONE, NULL, NULL, AF,
  119. "External", CD, 0, OP_NONE, NULL, "uX", AF,
  120. // Short Objects
  121. "Zero", CN, 0, OP_ZERO, NULL, NULL, 0,
  122. "One", CN, 0, OP_ONE, NULL, NULL, 0,
  123. "Ones", CN, 0, OP_ONES, NULL, NULL, 0,
  124. "Revision", CN, 0, OP_REVISION, NULL, NULL, 0,
  125. "Arg0", SN, 0, OP_ARG0, NULL, NULL, 0,
  126. "Arg1", SN, 0, OP_ARG1, NULL, NULL, 0,
  127. "Arg2", SN, 0, OP_ARG2, NULL, NULL, 0,
  128. "Arg3", SN, 0, OP_ARG3, NULL, NULL, 0,
  129. "Arg4", SN, 0, OP_ARG4, NULL, NULL, 0,
  130. "Arg5", SN, 0, OP_ARG5, NULL, NULL, 0,
  131. "Arg6", SN, 0, OP_ARG6, NULL, NULL, 0,
  132. "Local0", SN, 0, OP_LOCAL0, NULL, NULL, 0,
  133. "Local1", SN, 0, OP_LOCAL1, NULL, NULL, 0,
  134. "Local2", SN, 0, OP_LOCAL2, NULL, NULL, 0,
  135. "Local3", SN, 0, OP_LOCAL3, NULL, NULL, 0,
  136. "Local4", SN, 0, OP_LOCAL4, NULL, NULL, 0,
  137. "Local5", SN, 0, OP_LOCAL5, NULL, NULL, 0,
  138. "Local6", SN, 0, OP_LOCAL6, NULL, NULL, 0,
  139. "Local7", SN, 0, OP_LOCAL7, NULL, NULL, 0,
  140. "Debug", SN, 0, OP_DEBUG, NULL, NULL, 0,
  141. // Named Terms
  142. "Alias", NS, 0, OP_ALIAS, "NN", "Ua", 0,
  143. "Name", NS, 0, OP_NAME, "NO", "u", 0,
  144. "Scope", NS, 0, OP_SCOPE, "N", "S", OL|LN|CC,
  145. // Data Objects
  146. "Buffer", DO, 0, OP_BUFFER, "C", "U", DL|LN,
  147. "Package", DO, 0, OP_PACKAGE, "B", NULL, PL|LN,
  148. "EISAID", DO, 0, OP_DWORD, NULL,NULL, AF,
  149. // Argument Keywords
  150. "AnyAcc", KW, AANY, OP_NONE, NULL, "A", 0,
  151. "ByteAcc", KW, AB, OP_NONE, NULL, "A", 0,
  152. "WordAcc", KW, AW, OP_NONE, NULL, "A", 0,
  153. "DWordAcc", KW, ADW, OP_NONE, NULL, "A", 0,
  154. "QWordAcc", KW, AQW, OP_NONE, NULL, "A", 0,
  155. "BufferAcc", KW, ABFR, OP_NONE, NULL, "A", 0,
  156. "Lock", KW, LK, OP_NONE, NULL, "B", 0,
  157. "NoLock", KW, NOLK, OP_NONE, NULL, "B", 0,
  158. "Preserve", KW, PSRV, OP_NONE, NULL, "C", 0,
  159. "WriteAsOnes", KW, WA1S, OP_NONE, NULL, "C", 0,
  160. "WriteAsZeros", KW, WA0S, OP_NONE, NULL, "C", 0,
  161. "SystemMemory", KW, MEM, OP_NONE, NULL, "D", 0,
  162. "SystemIO", KW, IO, OP_NONE, NULL, "D", 0,
  163. "PCI_Config", KW, CFG, OP_NONE, NULL, "D", 0,
  164. "EmbeddedControl", KW, EC, OP_NONE, NULL, "D", 0,
  165. "SMBus", KW, SMB, OP_NONE, NULL, "D", 0,
  166. "Serialized", KW, SER, OP_NONE, NULL, "E", 0,
  167. "NotSerialized", KW, NOSER,OP_NONE, NULL, "E", 0,
  168. "MTR", KW, OMTR, OP_NONE, NULL, "F", 0,
  169. "MEQ", KW, OMEQ, OP_NONE, NULL, "F", 0,
  170. "MLE", KW, OMLE, OP_NONE, NULL, "F", 0,
  171. "MLT", KW, OMLT, OP_NONE, NULL, "F", 0,
  172. "MGE", KW, OMGE, OP_NONE, NULL, "F", 0,
  173. "MGT", KW, OMGT, OP_NONE, NULL, "F", 0,
  174. "Edge", KW, _HE, OP_NONE, NULL, "G", 0,
  175. "Level", KW, _LL, OP_NONE, NULL, "G", 0,
  176. "ActiveHigh", KW, _HE, OP_NONE, NULL, "H", 0,
  177. "ActiveLow", KW, _LL, OP_NONE, NULL, "H", 0,
  178. "Shared", KW, _SHR, OP_NONE, NULL, "I", 0,
  179. "Exclusive", KW, _EXC, OP_NONE, NULL, "I", 0,
  180. "Compatibility", KW, COMP, OP_NONE, NULL, "J", 0,
  181. "TypeA", KW, TYPA, OP_NONE, NULL, "J", 0,
  182. "TypeB", KW, TYPB, OP_NONE, NULL, "J", 0,
  183. "TypeF", KW, TYPF, OP_NONE, NULL, "J", 0,
  184. "BusMaster", KW, BM, OP_NONE, NULL, "K", 0,
  185. "NotBusMaster", KW, NOBM, OP_NONE, NULL, "K", 0,
  186. "Transfer8", KW, X8, OP_NONE, NULL, "L", 0,
  187. "Transfer8_16", KW, X816, OP_NONE, NULL, "L", 0,
  188. "Transfer16", KW, X16, OP_NONE, NULL, "L", 0,
  189. "Decode16", KW, DC16, OP_NONE, NULL, "M", 0,
  190. "Decode10", KW, DC10, OP_NONE, NULL, "M", 0,
  191. "ReadWrite", KW, _RW, OP_NONE, NULL, "N", 0,
  192. "ReadOnly", KW, _ROM, OP_NONE, NULL, "N", 0,
  193. "ResourceConsumer",KW, RCS, OP_NONE, NULL, "O", 0,
  194. "ResourceProducer",KW, RPD, OP_NONE, NULL, "O", 0,
  195. "SubDecode", KW, BSD, OP_NONE, NULL, "P", 0,
  196. "PosDecode", KW, BPD, OP_NONE, NULL, "P", 0,
  197. "MinFixed", KW, MIF, OP_NONE, NULL, "Q", 0,
  198. "MinNotFixed", KW, NMIF, OP_NONE, NULL, "Q", 0,
  199. "MaxFixed", KW, MAF, OP_NONE, NULL, "R", 0,
  200. "MaxNotFixed", KW, NMAF, OP_NONE, NULL, "R", 0,
  201. "Cacheable", KW, CACH, OP_NONE, NULL, "S", 0,
  202. "WriteCombining", KW, WRCB, OP_NONE, NULL, "S", 0,
  203. "Prefetchable", KW, PREF, OP_NONE, NULL, "S", 0,
  204. "NonCacheable", KW, NCAC, OP_NONE, NULL, "S", 0,
  205. "ISAOnlyRanges", KW, ISA, OP_NONE, NULL, "T", 0,
  206. "NonISAOnlyRanges",KW, NISA, OP_NONE, NULL, "T", 0,
  207. "EntireRange", KW, ERNG, OP_NONE, NULL, "T", 0,
  208. "ExtEdge", KW, ($HGH | $EDG), OP_NONE, NULL, "U", 0,
  209. "ExtLevel", KW, ($LOW | $LVL), OP_NONE, NULL, "U", 0,
  210. "ExtActiveHigh", KW, ($HGH | $EDG), OP_NONE, NULL, "V", 0,
  211. "ExtActiveLow", KW, ($LOW | $LVL), OP_NONE, NULL, "V", 0,
  212. "ExtShared", KW, $SHR, OP_NONE, NULL, "W", 0,
  213. "ExtExclusive", KW, $EXC, OP_NONE, NULL, "W", 0,
  214. "UnknownObj", KW, UNK, OP_NONE, NULL, "X", 0,
  215. "IntObj", KW, INT, OP_NONE, NULL, "X", 0,
  216. "StrObj", KW, STR, OP_NONE, NULL, "X", 0,
  217. "BuffObj", KW, BUF, OP_NONE, NULL, "X", 0,
  218. "PkgObj", KW, PKG, OP_NONE, NULL, "X", 0,
  219. "FieldUnitObj", KW, FDU, OP_NONE, NULL, "X", 0,
  220. "DeviceObj", KW, DEV, OP_NONE, NULL, "X", 0,
  221. "EventObj", KW, EVT, OP_NONE, NULL, "X", 0,
  222. "MethodObj", KW, MET, OP_NONE, NULL, "X", 0,
  223. "MutexObj", KW, MUT, OP_NONE, NULL, "X", 0,
  224. "OpRegionObj", KW, OPR, OP_NONE, NULL, "X", 0,
  225. "PowerResObj", KW, PWR, OP_NONE, NULL, "X", 0,
  226. "ThermalZoneObj", KW, THM, OP_NONE, NULL, "X", 0,
  227. "BuffFieldObj", KW, BFD, OP_NONE, NULL, "X", 0,
  228. "DDBHandleObj", KW, DDB, OP_NONE, NULL, "X", 0,
  229. "SMBQuick", KW, SMBQ, OP_NONE, NULL, "Y", 0,
  230. "SMBSendReceive", KW, SMBS, OP_NONE, NULL, "Y", 0,
  231. "SMBByte", KW, SMBB, OP_NONE, NULL, "Y", 0,
  232. "SMBWord", KW, SMBW, OP_NONE, NULL, "Y", 0,
  233. "SMBBlock", KW, SMBK, OP_NONE, NULL, "Y", 0,
  234. "SMBProcessCall", KW, SMBP, OP_NONE, NULL, "Y", 0,
  235. "SMBBlockProcessCall", KW, SMBC, OP_NONE, NULL, "Y", 0,
  236. // Field Macros
  237. "Offset", FM, 0, OP_NONE, NULL, NULL, 0,
  238. "AccessAs", FM, 0, 0x01, NULL, "A" , AF,
  239. // Named Object Creators
  240. "BankField", NO, 0, OP_BANKFIELD, "NNCKkk","OFUABC", FL|FM|LN|AF,
  241. "CreateBitField", NO, 0, OP_BITFIELD, "CCN", "UUb", 0,
  242. "CreateByteField", NO, 0, OP_BYTEFIELD, "CCN", "UUb", 0,
  243. "CreateDWordField",NO, 0, OP_DWORDFIELD, "CCN", "UUb", 0,
  244. "CreateField", NO, 0, OP_CREATEFIELD,"CCCN", "UUUb", 0,
  245. "CreateWordField", NO, 0, OP_WORDFIELD, "CCN", "UUb", 0,
  246. "Device", NO, 0, OP_DEVICE, "N", "d", OL|LN|CC,
  247. "Event", NO, 0, OP_EVENT, "N", "e", 0,
  248. "Field", NO, 0, OP_FIELD, "NKkk", "OABC", FL|FM|LN|AF,
  249. "IndexField", NO, 0, OP_IDXFIELD, "NNKkk", "FFABC", FL|FM|LN|AF,
  250. "Method", NO, 0, OP_METHOD, "NKk", "m!E", CL|OL|LN|AF|CC|SK,
  251. "Mutex", NO, 0, OP_MUTEX, "NB", "x", 0,
  252. "OperationRegion", NO, 0, OP_OPREGION, "NKCC", "oDUU", AF,
  253. "PowerResource", NO, 0, OP_POWERRES, "NBW", "p", OL|LN|CC,
  254. "Processor", NO, 0, OP_PROCESSOR, "NBDB", "c", OL|LN|CC,
  255. "ThermalZone", NO, 0, OP_THERMALZONE,"N", "t", OL|LN|CC,
  256. // Type 1 Opcode Terms
  257. "Break", C1, 0, OP_BREAK, NULL, NULL, 0,
  258. "BreakPoint", C1, 0, OP_BREAKPOINT, NULL, NULL, 0,
  259. "Else", C1, 0, OP_ELSE, NULL, NULL, AF|CL|OL|LN,
  260. "Fatal", C1, 0, OP_FATAL, "BDC", " U",0,
  261. "If", C1, 0, OP_IF, "C", "U", CL|OL|LN,
  262. "Load", C1, 0, OP_LOAD, "NS", "UU", 0,
  263. "Noop", C1, 0, OP_NOP, NULL, NULL, 0,
  264. "Notify", C1, 0, OP_NOTIFY, "SC", "UU", 0,
  265. "Release", C1, 0, OP_RELEASE, "S", "X", 0,
  266. "Reset", C1, 0, OP_RESET, "S", "E", 0,
  267. "Return", C1, 0, OP_RETURN, "C", "U", 0,
  268. "Signal", C1, 0, OP_SIGNAL, "S", "E", 0,
  269. "Sleep", C1, 0, OP_SLEEP, "C", "U", 0,
  270. "Stall", C1, 0, OP_STALL, "C", "U", 0,
  271. "Unload", C1, 0, OP_UNLOAD, "S", "U", 0,
  272. "While", C1, 0, OP_WHILE, "C", "U", CL|OL|LN,
  273. // Type 2 Opcode Terms
  274. "Acquire", C2, 0, OP_ACQUIRE, "SW", "X", 0,
  275. "Add", C2, 0, OP_ADD, "CCS", "UUU",0,
  276. "And", C2, 0, OP_AND, "CCS", "UUU",0,
  277. "Concatenate", C2, 0, OP_CONCAT, "CCS", "UUU",0,
  278. "CondRefOf", C2, 0, OP_CONDREFOF, "SS", "UU", 0,
  279. "Decrement", C2, 0, OP_DECREMENT, "S", "U", 0,
  280. "DerefOf", C2, 0, OP_DEREFOF, "C", "U", 0,
  281. "Divide", C2, 0, OP_DIVIDE, "CCSS", "UUUU",0,
  282. "FindSetLeftBit", C2, 0, OP_FINDSETLBIT, "CS", "UU", 0,
  283. "FindSetRightBit", C2, 0, OP_FINDSETRBIT, "CS", "UU", 0,
  284. "FromBCD", C2, 0, OP_FROMBCD, "CS", "UU", 0,
  285. "Increment", C2, 0, OP_INCREMENT, "S", "U", 0,
  286. "Index", C2, 0, OP_INDEX, "CCS", "UUU",0,
  287. "LAnd", C2, 0, OP_LAND, "CC", "UU", 0,
  288. "LEqual", C2, 0, OP_LEQ, "CC", "UU", 0,
  289. "LGreater", C2, 0, OP_LG, "CC", "UU", 0,
  290. "LGreaterEqual", C2, 0, OP_LGEQ, "CC", "UU", 0,
  291. "LLess", C2, 0, OP_LL, "CC", "UU", 0,
  292. "LLessEqual", C2, 0, OP_LLEQ, "CC", "UU", 0,
  293. "LNot", C2, 0, OP_LNOT, "C", "U", 0,
  294. "LNotEqual", C2, 0, OP_LNOTEQ, "CC", "UU", 0,
  295. "LOr", C2, 0, OP_LOR, "CC", "UU", 0,
  296. "Match", C2, 0, OP_MATCH, "CKCKCC", "UFUFUU",AF,
  297. "Multiply", C2, 0, OP_MULTIPLY, "CCS", "UUU",0,
  298. "NAnd", C2, 0, OP_NAND, "CCS", "UUU",0,
  299. "NOr", C2, 0, OP_NOR, "CCS", "UUU",0,
  300. "Not", C2, 0, OP_NOT, "CS", "UU", 0,
  301. "ObjectType", C2, 0, OP_OBJTYPE, "S", "U", 0,
  302. "Or", C2, 0, OP_OR, "CCS", "UUU",0,
  303. "RefOf", C2, 0, OP_REFOF, "S", "U", 0,
  304. "ShiftLeft", C2, 0, OP_SHIFTL, "CCS", "UUU",0,
  305. "ShiftRight", C2, 0, OP_SHIFTR, "CCS", "UUU",0,
  306. "SizeOf", C2, 0, OP_SIZEOF, "S", "U", 0,
  307. "Store", C2, 0, OP_STORE, "CS", "UU", 0,
  308. "Subtract", C2, 0, OP_SUBTRACT, "CCS", "UUU",0,
  309. "ToBCD", C2, 0, OP_TOBCD, "CS", "UU", 0,
  310. "Wait", C2, 0, OP_WAIT, "SC", "E", 0,
  311. "XOr", C2, 0, OP_XOR, "CCS", "UUU",0,
  312. NULL, 0, 0, OP_NONE, NULL, NULL, 0
  313. };
  314. #define INVALID OPCLASS_INVALID
  315. #define DATAOBJ OPCLASS_DATA_OBJ
  316. #define NAMEOBJ OPCLASS_NAME_OBJ
  317. #define CONSTOBJ OPCLASS_CONST_OBJ
  318. #define CODEOBJ OPCLASS_CODE_OBJ
  319. #define ARGOBJ OPCLASS_ARG_OBJ
  320. #define LOCALOBJ OPCLASS_LOCAL_OBJ
  321. UCHAR OpClassTable[256] =
  322. { //0x00 0x01 0x02 0x03
  323. CONSTOBJ, CONSTOBJ, INVALID, INVALID,
  324. //0x04 0x05 0x06 0x07
  325. INVALID, INVALID, CODEOBJ, INVALID,
  326. //0x08 0x09 0x0a 0x0b
  327. CODEOBJ, INVALID, DATAOBJ, DATAOBJ,
  328. //0x0c 0x0d 0x0e 0x0f
  329. DATAOBJ, DATAOBJ, INVALID, INVALID,
  330. //0x10 0x11 0x12 0x13
  331. CODEOBJ, CODEOBJ, CODEOBJ, INVALID,
  332. //0x14 0x15 0x16 0x17
  333. CODEOBJ, INVALID, INVALID, INVALID,
  334. //0x18 0x19 0x1a 0x1b
  335. INVALID, INVALID, INVALID, INVALID,
  336. //0x1c 0x1d 0x1e 0x1f
  337. INVALID, INVALID, INVALID, INVALID,
  338. //0x20 0x21 0x22 0x23
  339. INVALID, INVALID, INVALID, INVALID,
  340. //0x24 0x25 0x26 0x27
  341. INVALID, INVALID, INVALID, INVALID,
  342. //0x28 0x29 0x2a 0x2b
  343. INVALID, INVALID, INVALID, INVALID,
  344. //0x2c 0x2d 0x2e 0x2f
  345. INVALID, INVALID, NAMEOBJ, NAMEOBJ,
  346. //0x30 0x31 0x32 0x33
  347. INVALID, INVALID, INVALID, INVALID,
  348. //0x34 0x35 0x36 0x37
  349. INVALID, INVALID, INVALID, INVALID,
  350. //0x38 0x39 0x3a 0x3b
  351. INVALID, INVALID, INVALID, INVALID,
  352. //0x3c 0x3d 0x3e 0x3f
  353. INVALID, INVALID, INVALID, INVALID,
  354. //0x40 0x41 0x42 0x43
  355. INVALID, NAMEOBJ, NAMEOBJ, NAMEOBJ,
  356. //0x44 0x45 0x46 0x47
  357. NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
  358. //0x48 0x49 0x4a 0x4b
  359. NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
  360. //0x4c 0x4d 0x4e 0x4f
  361. NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
  362. //0x50 0x51 0x52 0x53
  363. NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
  364. //0x54 0x55 0x56 0x57
  365. NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
  366. //0x58 0x59 0x5a 0x5b
  367. NAMEOBJ, NAMEOBJ, NAMEOBJ, INVALID,
  368. //0x5c 0x5d 0x5e 0x5f
  369. NAMEOBJ, INVALID, NAMEOBJ, NAMEOBJ,
  370. //0x60 0x61 0x62 0x63
  371. LOCALOBJ, LOCALOBJ, LOCALOBJ, LOCALOBJ,
  372. //0x64 0x65 0x66 0x67
  373. LOCALOBJ, LOCALOBJ, LOCALOBJ, LOCALOBJ,
  374. //0x68 0x69 0x6a 0x6b
  375. ARGOBJ, ARGOBJ, ARGOBJ, ARGOBJ,
  376. //0x6c 0x6d 0x6e 0x6f
  377. ARGOBJ, ARGOBJ, ARGOBJ, INVALID,
  378. //0x70 0x71 0x72 0x73
  379. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  380. //0x74 0x75 0x76 0x77
  381. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  382. //0x78 0x79 0x7a 0x7b
  383. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  384. //0x7c 0x7d 0x7e 0x7f
  385. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  386. //0x80 0x81 0x82 0x83
  387. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  388. //0x84 0x85 0x86 0x87
  389. INVALID, INVALID, CODEOBJ, CODEOBJ,
  390. //0x88 0x89 0x8a 0x8b
  391. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  392. //0x8c 0x8d 0x8e 0x8f
  393. CODEOBJ, CODEOBJ, CODEOBJ, INVALID,
  394. //0x90 0x91 0x92 0x93
  395. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  396. //0x94 0x95 0x96 0x97
  397. CODEOBJ, CODEOBJ, INVALID, INVALID,
  398. //0x98 0x99 0x9a 0x9b
  399. INVALID, INVALID, INVALID, INVALID,
  400. //0x9c 0x9d 0x9e 0x9f
  401. INVALID, INVALID, INVALID, INVALID,
  402. //0xa0 0xa1 0xa2 0xa3
  403. CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
  404. //0xa4 0xa5 0xa6 0xa7
  405. CODEOBJ, CODEOBJ, INVALID, INVALID,
  406. //0xa8 0xa9 0xaa 0xab
  407. INVALID, INVALID, INVALID, INVALID,
  408. //0xac 0xad 0xae 0xaf
  409. INVALID, INVALID, INVALID, INVALID,
  410. //0xb0 0xb1 0xb2 0xb3
  411. INVALID, INVALID, INVALID, INVALID,
  412. //0xb4 0xb5 0xb6 0xb7
  413. INVALID, INVALID, INVALID, INVALID,
  414. //0xb8 0xb9 0xba 0xbb
  415. INVALID, INVALID, INVALID, INVALID,
  416. //0xbc 0xbd 0xbe 0xbf
  417. INVALID, INVALID, INVALID, INVALID,
  418. //0xc0 0xc1 0xc2 0xc3
  419. INVALID, INVALID, INVALID, INVALID,
  420. //0xc4 0xc5 0xc6 0xc7
  421. INVALID, INVALID, INVALID, INVALID,
  422. //0xc8 0xc9 0xca 0xcb
  423. INVALID, INVALID, INVALID, INVALID,
  424. //0xcc 0xcd 0xce 0xcf
  425. CODEOBJ, INVALID, INVALID, INVALID,
  426. //0xd0 0xd1 0xd2 0xd3
  427. INVALID, INVALID, INVALID, INVALID,
  428. //0xd4 0xd5 0xd6 0xd7
  429. INVALID, INVALID, INVALID, INVALID,
  430. //0xd8 0xd9 0xda 0xdb
  431. INVALID, INVALID, INVALID, INVALID,
  432. //0xdc 0xdd 0xde 0xdf
  433. INVALID, INVALID, INVALID, INVALID,
  434. //0xe0 0xe1 0xe2 0xe3
  435. INVALID, INVALID, INVALID, INVALID,
  436. //0xe4 0xe5 0xe6 0xe7
  437. INVALID, INVALID, INVALID, INVALID,
  438. //0xe8 0xe9 0xea 0xeb
  439. INVALID, INVALID, INVALID, INVALID,
  440. //0xec 0xed 0xee 0xef
  441. INVALID, INVALID, INVALID, INVALID,
  442. //0xf0 0xf1 0xf2 0xf3
  443. INVALID, INVALID, INVALID, INVALID,
  444. //0xf4 0xf5 0xf6 0xf7
  445. INVALID, INVALID, INVALID, INVALID,
  446. //0xf8 0xf9 0xfa 0xfb
  447. INVALID, INVALID, INVALID, INVALID,
  448. //0xfc 0xfd 0xfe 0xff
  449. INVALID, INVALID, INVALID, CONSTOBJ
  450. };
  451. OPMAP ExOpClassTable[] =
  452. {
  453. EXOP_MUTEX, CODEOBJ,
  454. EXOP_EVENT, CODEOBJ,
  455. EXOP_CONDREFOF, CODEOBJ,
  456. EXOP_CREATEFIELD, CODEOBJ,
  457. EXOP_LOAD, CODEOBJ,
  458. EXOP_STALL, CODEOBJ,
  459. EXOP_SLEEP, CODEOBJ,
  460. EXOP_ACQUIRE, CODEOBJ,
  461. EXOP_SIGNAL, CODEOBJ,
  462. EXOP_WAIT, CODEOBJ,
  463. EXOP_RESET, CODEOBJ,
  464. EXOP_RELEASE, CODEOBJ,
  465. EXOP_FROMBCD, CODEOBJ,
  466. EXOP_TOBCD, CODEOBJ,
  467. EXOP_UNLOAD, CODEOBJ,
  468. EXOP_REVISION, CODEOBJ,
  469. EXOP_DEBUG, CODEOBJ,
  470. EXOP_FATAL, CODEOBJ,
  471. EXOP_OPREGION, CODEOBJ,
  472. EXOP_FIELD, CODEOBJ,
  473. EXOP_DEVICE, CODEOBJ,
  474. EXOP_PROCESSOR, CODEOBJ,
  475. EXOP_POWERRES, CODEOBJ,
  476. EXOP_THERMALZONE, CODEOBJ,
  477. EXOP_IDXFIELD, CODEOBJ,
  478. EXOP_BANKFIELD, CODEOBJ,
  479. 0, 0
  480. };