539 lines
25 KiB
C
539 lines
25 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1997 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
data.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This file contains all of the data required by the unassembler
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Based on code by Mike Tsang (MikeTs)
|
|||
|
Stephane Plante (Splante)
|
|||
|
|
|||
|
Environment:
|
|||
|
|
|||
|
User mode only
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#include "pch.h"
|
|||
|
|
|||
|
//
|
|||
|
// N: NameStr
|
|||
|
// O: DataObj (num, string, buffer, package)
|
|||
|
// K: Keyword (e.g. NoLock, ByteAcc etc.)
|
|||
|
// D: DWord integer
|
|||
|
// W: Word integer
|
|||
|
// B: Byte integer
|
|||
|
// U: Numeric (any size integer)
|
|||
|
// S: SuperName (NameStr + Localx + Argx + Ret)
|
|||
|
// C: Opcode
|
|||
|
// Z: ASCIIZ string
|
|||
|
//
|
|||
|
#define AF TF_ACTION_FLIST //process after fixed list is parsed
|
|||
|
#define AV TF_ACTION_VLIST //process after variable list is parsed
|
|||
|
#define LN TF_PACKAGE_LEN //term requires package length
|
|||
|
#define CC TF_CHANGE_CHILDSCOPE //change to child scope
|
|||
|
#define DL TF_DATA_LIST //term expects buffer data list
|
|||
|
#define PL TF_PACKAGE_LIST //term expects package list
|
|||
|
#define FL TF_FIELD_LIST //term expects FieldList
|
|||
|
#define OL TF_OBJECT_LIST //term expects ObjectList
|
|||
|
#define LL TF_COMPILER_DIRECTIVE //term expects compiler directives
|
|||
|
#define CL TF_CODE_LIST //term expects CodeList
|
|||
|
#define AL TF_ALL_LISTS //term expects anything
|
|||
|
#define ML TF_PNP_MACRO //term expects PNPMacro
|
|||
|
#define BL TF_BYTE_LIST //term expects ByteList
|
|||
|
#define DD TF_DWORD_LIST //term expects DWordList
|
|||
|
#define SK TF_DELAY_UNASM //term cannot be unasmed on the first pass
|
|||
|
|
|||
|
#define CD UTC_COMPILER_DIRECTIVE
|
|||
|
#define FM UTC_FIELD_MACRO
|
|||
|
#define CN UTC_CONST_NAME
|
|||
|
#define SN UTC_SHORT_NAME
|
|||
|
#define NS UTC_NAMESPACE_MODIFIER
|
|||
|
#define DO UTC_DATA_OBJECT
|
|||
|
#define KW UTC_KEYWORD
|
|||
|
#define NO UTC_NAMED_OBJECT
|
|||
|
#define C1 UTC_OPCODE_TYPE1
|
|||
|
#define C2 UTC_OPCODE_TYPE2
|
|||
|
#define RO UTC_REF_OBJECT
|
|||
|
#define PM UTC_PNP_MACRO
|
|||
|
|
|||
|
#define UNK OBJTYPE_UNKNOWN
|
|||
|
#define INT OBJTYPE_INTDATA
|
|||
|
#define STR OBJTYPE_STRDATA
|
|||
|
#define BUF OBJTYPE_BUFFDATA
|
|||
|
#define PKG OBJTYPE_PKGDATA
|
|||
|
#define FDU OBJTYPE_FIELDUNIT
|
|||
|
#define DEV OBJTYPE_DEVICE
|
|||
|
#define EVT OBJTYPE_EVENT
|
|||
|
#define MET OBJTYPE_METHOD
|
|||
|
#define MUT OBJTYPE_MUTEX
|
|||
|
#define OPR OBJTYPE_OPREGION
|
|||
|
#define PWR OBJTYPE_POWERRES
|
|||
|
#define THM OBJTYPE_THERMALZONE
|
|||
|
#define BFD OBJTYPE_BUFFFIELD
|
|||
|
#define DDB OBJTYPE_DDBHANDLE
|
|||
|
|
|||
|
//
|
|||
|
// Field flags
|
|||
|
//
|
|||
|
#define AANY (ACCTYPE_ANY | (ACCTYPE_MASK << 8))
|
|||
|
#define AB (ACCTYPE_BYTE | (ACCTYPE_MASK << 8))
|
|||
|
#define AW (ACCTYPE_WORD | (ACCTYPE_MASK << 8))
|
|||
|
#define ADW (ACCTYPE_DWORD | (ACCTYPE_MASK << 8))
|
|||
|
#define AQW (ACCTYPE_QWORD | (ACCTYPE_MASK << 8))
|
|||
|
#define ABFR (ACCTYPE_BUFFER | (ACCTYPE_MASK << 8))
|
|||
|
#define LK (LOCKRULE_LOCK | (LOCKRULE_MASK << 8))
|
|||
|
#define NOLK (LOCKRULE_NOLOCK | (LOCKRULE_MASK << 8))
|
|||
|
#define PSRV (UPDATERULE_PRESERVE | (UPDATERULE_MASK << 8))
|
|||
|
#define WA1S (UPDATERULE_WRITEASONES | (UPDATERULE_MASK << 8))
|
|||
|
#define WA0S (UPDATERULE_WRITEASZEROS | (UPDATERULE_MASK << 8))
|
|||
|
|
|||
|
//
|
|||
|
// AccessAttribute
|
|||
|
//
|
|||
|
|
|||
|
#define SMBQ 0x02
|
|||
|
#define SMBS 0x04
|
|||
|
#define SMBB 0x06
|
|||
|
#define SMBW 0x08
|
|||
|
#define SMBK 0x0a
|
|||
|
#define SMBP 0x0c
|
|||
|
#define SMBC 0x0d
|
|||
|
|
|||
|
//
|
|||
|
// Operation region space
|
|||
|
//
|
|||
|
#define MEM (REGSPACE_MEM | 0xff00)
|
|||
|
#define IO (REGSPACE_IO | 0xff00)
|
|||
|
#define CFG (REGSPACE_PCICFG | 0xff00)
|
|||
|
#define EC (REGSPACE_EC | 0xff00)
|
|||
|
#define SMB (REGSPACE_SMB | 0xff00)
|
|||
|
|
|||
|
//
|
|||
|
// Method flags
|
|||
|
//
|
|||
|
#define SER (METHOD_SERIALIZED | (METHOD_SYNCMASK << 8))
|
|||
|
#define NOSER (METHOD_NOTSERIALIZED | (METHOD_SYNCMASK << 8))
|
|||
|
|
|||
|
//
|
|||
|
// Match operation values
|
|||
|
//
|
|||
|
#define OMTR (MTR | 0xff00)
|
|||
|
#define OMEQ (MEQ | 0xff00)
|
|||
|
#define OMLE (MLE | 0xff00)
|
|||
|
#define OMLT (MLT | 0xff00)
|
|||
|
#define OMGE (MGE | 0xff00)
|
|||
|
#define OMGT (MGT | 0xff00)
|
|||
|
|
|||
|
ASLTERM TermTable[] =
|
|||
|
{
|
|||
|
"DefinitionBlock", CD, 0, OP_NONE, NULL, NULL, OL|CL|LL|AF|AV,
|
|||
|
"Include", CD, 0, OP_NONE, NULL, NULL, AF,
|
|||
|
"External", CD, 0, OP_NONE, NULL, "uX", AF,
|
|||
|
|
|||
|
// Short Objects
|
|||
|
"Zero", CN, 0, OP_ZERO, NULL, NULL, 0,
|
|||
|
"One", CN, 0, OP_ONE, NULL, NULL, 0,
|
|||
|
"Ones", CN, 0, OP_ONES, NULL, NULL, 0,
|
|||
|
"Revision", CN, 0, OP_REVISION, NULL, NULL, 0,
|
|||
|
"Arg0", SN, 0, OP_ARG0, NULL, NULL, 0,
|
|||
|
"Arg1", SN, 0, OP_ARG1, NULL, NULL, 0,
|
|||
|
"Arg2", SN, 0, OP_ARG2, NULL, NULL, 0,
|
|||
|
"Arg3", SN, 0, OP_ARG3, NULL, NULL, 0,
|
|||
|
"Arg4", SN, 0, OP_ARG4, NULL, NULL, 0,
|
|||
|
"Arg5", SN, 0, OP_ARG5, NULL, NULL, 0,
|
|||
|
"Arg6", SN, 0, OP_ARG6, NULL, NULL, 0,
|
|||
|
"Local0", SN, 0, OP_LOCAL0, NULL, NULL, 0,
|
|||
|
"Local1", SN, 0, OP_LOCAL1, NULL, NULL, 0,
|
|||
|
"Local2", SN, 0, OP_LOCAL2, NULL, NULL, 0,
|
|||
|
"Local3", SN, 0, OP_LOCAL3, NULL, NULL, 0,
|
|||
|
"Local4", SN, 0, OP_LOCAL4, NULL, NULL, 0,
|
|||
|
"Local5", SN, 0, OP_LOCAL5, NULL, NULL, 0,
|
|||
|
"Local6", SN, 0, OP_LOCAL6, NULL, NULL, 0,
|
|||
|
"Local7", SN, 0, OP_LOCAL7, NULL, NULL, 0,
|
|||
|
"Debug", SN, 0, OP_DEBUG, NULL, NULL, 0,
|
|||
|
|
|||
|
// Named Terms
|
|||
|
"Alias", NS, 0, OP_ALIAS, "NN", "Ua", 0,
|
|||
|
"Name", NS, 0, OP_NAME, "NO", "u", 0,
|
|||
|
"Scope", NS, 0, OP_SCOPE, "N", "S", OL|LN|CC,
|
|||
|
|
|||
|
// Data Objects
|
|||
|
"Buffer", DO, 0, OP_BUFFER, "C", "U", DL|LN,
|
|||
|
"Package", DO, 0, OP_PACKAGE, "B", NULL, PL|LN,
|
|||
|
"EISAID", DO, 0, OP_DWORD, NULL,NULL, AF,
|
|||
|
|
|||
|
// Argument Keywords
|
|||
|
"AnyAcc", KW, AANY, OP_NONE, NULL, "A", 0,
|
|||
|
"ByteAcc", KW, AB, OP_NONE, NULL, "A", 0,
|
|||
|
"WordAcc", KW, AW, OP_NONE, NULL, "A", 0,
|
|||
|
"DWordAcc", KW, ADW, OP_NONE, NULL, "A", 0,
|
|||
|
"QWordAcc", KW, AQW, OP_NONE, NULL, "A", 0,
|
|||
|
"BufferAcc", KW, ABFR, OP_NONE, NULL, "A", 0,
|
|||
|
|
|||
|
"Lock", KW, LK, OP_NONE, NULL, "B", 0,
|
|||
|
"NoLock", KW, NOLK, OP_NONE, NULL, "B", 0,
|
|||
|
|
|||
|
"Preserve", KW, PSRV, OP_NONE, NULL, "C", 0,
|
|||
|
"WriteAsOnes", KW, WA1S, OP_NONE, NULL, "C", 0,
|
|||
|
"WriteAsZeros", KW, WA0S, OP_NONE, NULL, "C", 0,
|
|||
|
|
|||
|
"SystemMemory", KW, MEM, OP_NONE, NULL, "D", 0,
|
|||
|
"SystemIO", KW, IO, OP_NONE, NULL, "D", 0,
|
|||
|
"PCI_Config", KW, CFG, OP_NONE, NULL, "D", 0,
|
|||
|
"EmbeddedControl", KW, EC, OP_NONE, NULL, "D", 0,
|
|||
|
"SMBus", KW, SMB, OP_NONE, NULL, "D", 0,
|
|||
|
|
|||
|
"Serialized", KW, SER, OP_NONE, NULL, "E", 0,
|
|||
|
"NotSerialized", KW, NOSER,OP_NONE, NULL, "E", 0,
|
|||
|
|
|||
|
"MTR", KW, OMTR, OP_NONE, NULL, "F", 0,
|
|||
|
"MEQ", KW, OMEQ, OP_NONE, NULL, "F", 0,
|
|||
|
"MLE", KW, OMLE, OP_NONE, NULL, "F", 0,
|
|||
|
"MLT", KW, OMLT, OP_NONE, NULL, "F", 0,
|
|||
|
"MGE", KW, OMGE, OP_NONE, NULL, "F", 0,
|
|||
|
"MGT", KW, OMGT, OP_NONE, NULL, "F", 0,
|
|||
|
|
|||
|
"Edge", KW, _HE, OP_NONE, NULL, "G", 0,
|
|||
|
"Level", KW, _LL, OP_NONE, NULL, "G", 0,
|
|||
|
|
|||
|
"ActiveHigh", KW, _HE, OP_NONE, NULL, "H", 0,
|
|||
|
"ActiveLow", KW, _LL, OP_NONE, NULL, "H", 0,
|
|||
|
|
|||
|
"Shared", KW, _SHR, OP_NONE, NULL, "I", 0,
|
|||
|
"Exclusive", KW, _EXC, OP_NONE, NULL, "I", 0,
|
|||
|
|
|||
|
"Compatibility", KW, COMP, OP_NONE, NULL, "J", 0,
|
|||
|
"TypeA", KW, TYPA, OP_NONE, NULL, "J", 0,
|
|||
|
"TypeB", KW, TYPB, OP_NONE, NULL, "J", 0,
|
|||
|
"TypeF", KW, TYPF, OP_NONE, NULL, "J", 0,
|
|||
|
|
|||
|
"BusMaster", KW, BM, OP_NONE, NULL, "K", 0,
|
|||
|
"NotBusMaster", KW, NOBM, OP_NONE, NULL, "K", 0,
|
|||
|
|
|||
|
"Transfer8", KW, X8, OP_NONE, NULL, "L", 0,
|
|||
|
"Transfer8_16", KW, X816, OP_NONE, NULL, "L", 0,
|
|||
|
"Transfer16", KW, X16, OP_NONE, NULL, "L", 0,
|
|||
|
|
|||
|
"Decode16", KW, DC16, OP_NONE, NULL, "M", 0,
|
|||
|
"Decode10", KW, DC10, OP_NONE, NULL, "M", 0,
|
|||
|
|
|||
|
"ReadWrite", KW, _RW, OP_NONE, NULL, "N", 0,
|
|||
|
"ReadOnly", KW, _ROM, OP_NONE, NULL, "N", 0,
|
|||
|
|
|||
|
"ResourceConsumer",KW, RCS, OP_NONE, NULL, "O", 0,
|
|||
|
"ResourceProducer",KW, RPD, OP_NONE, NULL, "O", 0,
|
|||
|
|
|||
|
"SubDecode", KW, BSD, OP_NONE, NULL, "P", 0,
|
|||
|
"PosDecode", KW, BPD, OP_NONE, NULL, "P", 0,
|
|||
|
|
|||
|
"MinFixed", KW, MIF, OP_NONE, NULL, "Q", 0,
|
|||
|
"MinNotFixed", KW, NMIF, OP_NONE, NULL, "Q", 0,
|
|||
|
|
|||
|
"MaxFixed", KW, MAF, OP_NONE, NULL, "R", 0,
|
|||
|
"MaxNotFixed", KW, NMAF, OP_NONE, NULL, "R", 0,
|
|||
|
|
|||
|
"Cacheable", KW, CACH, OP_NONE, NULL, "S", 0,
|
|||
|
"WriteCombining", KW, WRCB, OP_NONE, NULL, "S", 0,
|
|||
|
"Prefetchable", KW, PREF, OP_NONE, NULL, "S", 0,
|
|||
|
"NonCacheable", KW, NCAC, OP_NONE, NULL, "S", 0,
|
|||
|
|
|||
|
"ISAOnlyRanges", KW, ISA, OP_NONE, NULL, "T", 0,
|
|||
|
"NonISAOnlyRanges",KW, NISA, OP_NONE, NULL, "T", 0,
|
|||
|
"EntireRange", KW, ERNG, OP_NONE, NULL, "T", 0,
|
|||
|
|
|||
|
"ExtEdge", KW, ($HGH | $EDG), OP_NONE, NULL, "U", 0,
|
|||
|
"ExtLevel", KW, ($LOW | $LVL), OP_NONE, NULL, "U", 0,
|
|||
|
|
|||
|
"ExtActiveHigh", KW, ($HGH | $EDG), OP_NONE, NULL, "V", 0,
|
|||
|
"ExtActiveLow", KW, ($LOW | $LVL), OP_NONE, NULL, "V", 0,
|
|||
|
|
|||
|
"ExtShared", KW, $SHR, OP_NONE, NULL, "W", 0,
|
|||
|
"ExtExclusive", KW, $EXC, OP_NONE, NULL, "W", 0,
|
|||
|
|
|||
|
"UnknownObj", KW, UNK, OP_NONE, NULL, "X", 0,
|
|||
|
"IntObj", KW, INT, OP_NONE, NULL, "X", 0,
|
|||
|
"StrObj", KW, STR, OP_NONE, NULL, "X", 0,
|
|||
|
"BuffObj", KW, BUF, OP_NONE, NULL, "X", 0,
|
|||
|
"PkgObj", KW, PKG, OP_NONE, NULL, "X", 0,
|
|||
|
"FieldUnitObj", KW, FDU, OP_NONE, NULL, "X", 0,
|
|||
|
"DeviceObj", KW, DEV, OP_NONE, NULL, "X", 0,
|
|||
|
"EventObj", KW, EVT, OP_NONE, NULL, "X", 0,
|
|||
|
"MethodObj", KW, MET, OP_NONE, NULL, "X", 0,
|
|||
|
"MutexObj", KW, MUT, OP_NONE, NULL, "X", 0,
|
|||
|
"OpRegionObj", KW, OPR, OP_NONE, NULL, "X", 0,
|
|||
|
"PowerResObj", KW, PWR, OP_NONE, NULL, "X", 0,
|
|||
|
"ThermalZoneObj", KW, THM, OP_NONE, NULL, "X", 0,
|
|||
|
"BuffFieldObj", KW, BFD, OP_NONE, NULL, "X", 0,
|
|||
|
"DDBHandleObj", KW, DDB, OP_NONE, NULL, "X", 0,
|
|||
|
|
|||
|
"SMBQuick", KW, SMBQ, OP_NONE, NULL, "Y", 0,
|
|||
|
"SMBSendReceive", KW, SMBS, OP_NONE, NULL, "Y", 0,
|
|||
|
"SMBByte", KW, SMBB, OP_NONE, NULL, "Y", 0,
|
|||
|
"SMBWord", KW, SMBW, OP_NONE, NULL, "Y", 0,
|
|||
|
"SMBBlock", KW, SMBK, OP_NONE, NULL, "Y", 0,
|
|||
|
"SMBProcessCall", KW, SMBP, OP_NONE, NULL, "Y", 0,
|
|||
|
"SMBBlockProcessCall", KW, SMBC, OP_NONE, NULL, "Y", 0,
|
|||
|
|
|||
|
// Field Macros
|
|||
|
"Offset", FM, 0, OP_NONE, NULL, NULL, 0,
|
|||
|
"AccessAs", FM, 0, 0x01, NULL, "A" , AF,
|
|||
|
|
|||
|
// Named Object Creators
|
|||
|
"BankField", NO, 0, OP_BANKFIELD, "NNCKkk","OFUABC", FL|FM|LN|AF,
|
|||
|
"CreateBitField", NO, 0, OP_BITFIELD, "CCN", "UUb", 0,
|
|||
|
"CreateByteField", NO, 0, OP_BYTEFIELD, "CCN", "UUb", 0,
|
|||
|
"CreateDWordField",NO, 0, OP_DWORDFIELD, "CCN", "UUb", 0,
|
|||
|
"CreateField", NO, 0, OP_CREATEFIELD,"CCCN", "UUUb", 0,
|
|||
|
"CreateWordField", NO, 0, OP_WORDFIELD, "CCN", "UUb", 0,
|
|||
|
"Device", NO, 0, OP_DEVICE, "N", "d", OL|LN|CC,
|
|||
|
"Event", NO, 0, OP_EVENT, "N", "e", 0,
|
|||
|
"Field", NO, 0, OP_FIELD, "NKkk", "OABC", FL|FM|LN|AF,
|
|||
|
"IndexField", NO, 0, OP_IDXFIELD, "NNKkk", "FFABC", FL|FM|LN|AF,
|
|||
|
"Method", NO, 0, OP_METHOD, "NKk", "m!E", CL|OL|LN|AF|CC|SK,
|
|||
|
"Mutex", NO, 0, OP_MUTEX, "NB", "x", 0,
|
|||
|
"OperationRegion", NO, 0, OP_OPREGION, "NKCC", "oDUU", AF,
|
|||
|
"PowerResource", NO, 0, OP_POWERRES, "NBW", "p", OL|LN|CC,
|
|||
|
"Processor", NO, 0, OP_PROCESSOR, "NBDB", "c", OL|LN|CC,
|
|||
|
"ThermalZone", NO, 0, OP_THERMALZONE,"N", "t", OL|LN|CC,
|
|||
|
|
|||
|
// Type 1 Opcode Terms
|
|||
|
"Break", C1, 0, OP_BREAK, NULL, NULL, 0,
|
|||
|
"BreakPoint", C1, 0, OP_BREAKPOINT, NULL, NULL, 0,
|
|||
|
"Else", C1, 0, OP_ELSE, NULL, NULL, AF|CL|OL|LN,
|
|||
|
"Fatal", C1, 0, OP_FATAL, "BDC", " U",0,
|
|||
|
"If", C1, 0, OP_IF, "C", "U", CL|OL|LN,
|
|||
|
"Load", C1, 0, OP_LOAD, "NS", "UU", 0,
|
|||
|
"Noop", C1, 0, OP_NOP, NULL, NULL, 0,
|
|||
|
"Notify", C1, 0, OP_NOTIFY, "SC", "UU", 0,
|
|||
|
"Release", C1, 0, OP_RELEASE, "S", "X", 0,
|
|||
|
"Reset", C1, 0, OP_RESET, "S", "E", 0,
|
|||
|
"Return", C1, 0, OP_RETURN, "C", "U", 0,
|
|||
|
"Signal", C1, 0, OP_SIGNAL, "S", "E", 0,
|
|||
|
"Sleep", C1, 0, OP_SLEEP, "C", "U", 0,
|
|||
|
"Stall", C1, 0, OP_STALL, "C", "U", 0,
|
|||
|
"Unload", C1, 0, OP_UNLOAD, "S", "U", 0,
|
|||
|
"While", C1, 0, OP_WHILE, "C", "U", CL|OL|LN,
|
|||
|
|
|||
|
// Type 2 Opcode Terms
|
|||
|
"Acquire", C2, 0, OP_ACQUIRE, "SW", "X", 0,
|
|||
|
"Add", C2, 0, OP_ADD, "CCS", "UUU",0,
|
|||
|
"And", C2, 0, OP_AND, "CCS", "UUU",0,
|
|||
|
"Concatenate", C2, 0, OP_CONCAT, "CCS", "UUU",0,
|
|||
|
"CondRefOf", C2, 0, OP_CONDREFOF, "SS", "UU", 0,
|
|||
|
"Decrement", C2, 0, OP_DECREMENT, "S", "U", 0,
|
|||
|
"DerefOf", C2, 0, OP_DEREFOF, "C", "U", 0,
|
|||
|
"Divide", C2, 0, OP_DIVIDE, "CCSS", "UUUU",0,
|
|||
|
"FindSetLeftBit", C2, 0, OP_FINDSETLBIT, "CS", "UU", 0,
|
|||
|
"FindSetRightBit", C2, 0, OP_FINDSETRBIT, "CS", "UU", 0,
|
|||
|
"FromBCD", C2, 0, OP_FROMBCD, "CS", "UU", 0,
|
|||
|
"Increment", C2, 0, OP_INCREMENT, "S", "U", 0,
|
|||
|
"Index", C2, 0, OP_INDEX, "CCS", "UUU",0,
|
|||
|
"LAnd", C2, 0, OP_LAND, "CC", "UU", 0,
|
|||
|
"LEqual", C2, 0, OP_LEQ, "CC", "UU", 0,
|
|||
|
"LGreater", C2, 0, OP_LG, "CC", "UU", 0,
|
|||
|
"LGreaterEqual", C2, 0, OP_LGEQ, "CC", "UU", 0,
|
|||
|
"LLess", C2, 0, OP_LL, "CC", "UU", 0,
|
|||
|
"LLessEqual", C2, 0, OP_LLEQ, "CC", "UU", 0,
|
|||
|
"LNot", C2, 0, OP_LNOT, "C", "U", 0,
|
|||
|
"LNotEqual", C2, 0, OP_LNOTEQ, "CC", "UU", 0,
|
|||
|
"LOr", C2, 0, OP_LOR, "CC", "UU", 0,
|
|||
|
"Match", C2, 0, OP_MATCH, "CKCKCC", "UFUFUU",AF,
|
|||
|
"Multiply", C2, 0, OP_MULTIPLY, "CCS", "UUU",0,
|
|||
|
"NAnd", C2, 0, OP_NAND, "CCS", "UUU",0,
|
|||
|
"NOr", C2, 0, OP_NOR, "CCS", "UUU",0,
|
|||
|
"Not", C2, 0, OP_NOT, "CS", "UU", 0,
|
|||
|
"ObjectType", C2, 0, OP_OBJTYPE, "S", "U", 0,
|
|||
|
"Or", C2, 0, OP_OR, "CCS", "UUU",0,
|
|||
|
"RefOf", C2, 0, OP_REFOF, "S", "U", 0,
|
|||
|
"ShiftLeft", C2, 0, OP_SHIFTL, "CCS", "UUU",0,
|
|||
|
"ShiftRight", C2, 0, OP_SHIFTR, "CCS", "UUU",0,
|
|||
|
"SizeOf", C2, 0, OP_SIZEOF, "S", "U", 0,
|
|||
|
"Store", C2, 0, OP_STORE, "CS", "UU", 0,
|
|||
|
"Subtract", C2, 0, OP_SUBTRACT, "CCS", "UUU",0,
|
|||
|
"ToBCD", C2, 0, OP_TOBCD, "CS", "UU", 0,
|
|||
|
"Wait", C2, 0, OP_WAIT, "SC", "E", 0,
|
|||
|
"XOr", C2, 0, OP_XOR, "CCS", "UUU",0,
|
|||
|
|
|||
|
NULL, 0, 0, OP_NONE, NULL, NULL, 0
|
|||
|
};
|
|||
|
|
|||
|
#define INVALID OPCLASS_INVALID
|
|||
|
#define DATAOBJ OPCLASS_DATA_OBJ
|
|||
|
#define NAMEOBJ OPCLASS_NAME_OBJ
|
|||
|
#define CONSTOBJ OPCLASS_CONST_OBJ
|
|||
|
#define CODEOBJ OPCLASS_CODE_OBJ
|
|||
|
#define ARGOBJ OPCLASS_ARG_OBJ
|
|||
|
#define LOCALOBJ OPCLASS_LOCAL_OBJ
|
|||
|
|
|||
|
UCHAR OpClassTable[256] =
|
|||
|
{ //0x00 0x01 0x02 0x03
|
|||
|
CONSTOBJ, CONSTOBJ, INVALID, INVALID,
|
|||
|
//0x04 0x05 0x06 0x07
|
|||
|
INVALID, INVALID, CODEOBJ, INVALID,
|
|||
|
//0x08 0x09 0x0a 0x0b
|
|||
|
CODEOBJ, INVALID, DATAOBJ, DATAOBJ,
|
|||
|
//0x0c 0x0d 0x0e 0x0f
|
|||
|
DATAOBJ, DATAOBJ, INVALID, INVALID,
|
|||
|
//0x10 0x11 0x12 0x13
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, INVALID,
|
|||
|
//0x14 0x15 0x16 0x17
|
|||
|
CODEOBJ, INVALID, INVALID, INVALID,
|
|||
|
//0x18 0x19 0x1a 0x1b
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x1c 0x1d 0x1e 0x1f
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x20 0x21 0x22 0x23
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x24 0x25 0x26 0x27
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x28 0x29 0x2a 0x2b
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x2c 0x2d 0x2e 0x2f
|
|||
|
INVALID, INVALID, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x30 0x31 0x32 0x33
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x34 0x35 0x36 0x37
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x38 0x39 0x3a 0x3b
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x3c 0x3d 0x3e 0x3f
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x40 0x41 0x42 0x43
|
|||
|
INVALID, NAMEOBJ, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x44 0x45 0x46 0x47
|
|||
|
NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x48 0x49 0x4a 0x4b
|
|||
|
NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x4c 0x4d 0x4e 0x4f
|
|||
|
NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x50 0x51 0x52 0x53
|
|||
|
NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x54 0x55 0x56 0x57
|
|||
|
NAMEOBJ, NAMEOBJ, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x58 0x59 0x5a 0x5b
|
|||
|
NAMEOBJ, NAMEOBJ, NAMEOBJ, INVALID,
|
|||
|
//0x5c 0x5d 0x5e 0x5f
|
|||
|
NAMEOBJ, INVALID, NAMEOBJ, NAMEOBJ,
|
|||
|
//0x60 0x61 0x62 0x63
|
|||
|
LOCALOBJ, LOCALOBJ, LOCALOBJ, LOCALOBJ,
|
|||
|
//0x64 0x65 0x66 0x67
|
|||
|
LOCALOBJ, LOCALOBJ, LOCALOBJ, LOCALOBJ,
|
|||
|
//0x68 0x69 0x6a 0x6b
|
|||
|
ARGOBJ, ARGOBJ, ARGOBJ, ARGOBJ,
|
|||
|
//0x6c 0x6d 0x6e 0x6f
|
|||
|
ARGOBJ, ARGOBJ, ARGOBJ, INVALID,
|
|||
|
//0x70 0x71 0x72 0x73
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x74 0x75 0x76 0x77
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x78 0x79 0x7a 0x7b
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x7c 0x7d 0x7e 0x7f
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x80 0x81 0x82 0x83
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x84 0x85 0x86 0x87
|
|||
|
INVALID, INVALID, CODEOBJ, CODEOBJ,
|
|||
|
//0x88 0x89 0x8a 0x8b
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x8c 0x8d 0x8e 0x8f
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, INVALID,
|
|||
|
//0x90 0x91 0x92 0x93
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0x94 0x95 0x96 0x97
|
|||
|
CODEOBJ, CODEOBJ, INVALID, INVALID,
|
|||
|
//0x98 0x99 0x9a 0x9b
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0x9c 0x9d 0x9e 0x9f
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xa0 0xa1 0xa2 0xa3
|
|||
|
CODEOBJ, CODEOBJ, CODEOBJ, CODEOBJ,
|
|||
|
//0xa4 0xa5 0xa6 0xa7
|
|||
|
CODEOBJ, CODEOBJ, INVALID, INVALID,
|
|||
|
//0xa8 0xa9 0xaa 0xab
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xac 0xad 0xae 0xaf
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xb0 0xb1 0xb2 0xb3
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xb4 0xb5 0xb6 0xb7
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xb8 0xb9 0xba 0xbb
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xbc 0xbd 0xbe 0xbf
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xc0 0xc1 0xc2 0xc3
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xc4 0xc5 0xc6 0xc7
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xc8 0xc9 0xca 0xcb
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xcc 0xcd 0xce 0xcf
|
|||
|
CODEOBJ, INVALID, INVALID, INVALID,
|
|||
|
//0xd0 0xd1 0xd2 0xd3
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xd4 0xd5 0xd6 0xd7
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xd8 0xd9 0xda 0xdb
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xdc 0xdd 0xde 0xdf
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xe0 0xe1 0xe2 0xe3
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xe4 0xe5 0xe6 0xe7
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xe8 0xe9 0xea 0xeb
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xec 0xed 0xee 0xef
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xf0 0xf1 0xf2 0xf3
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xf4 0xf5 0xf6 0xf7
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xf8 0xf9 0xfa 0xfb
|
|||
|
INVALID, INVALID, INVALID, INVALID,
|
|||
|
//0xfc 0xfd 0xfe 0xff
|
|||
|
INVALID, INVALID, INVALID, CONSTOBJ
|
|||
|
};
|
|||
|
|
|||
|
OPMAP ExOpClassTable[] =
|
|||
|
{
|
|||
|
EXOP_MUTEX, CODEOBJ,
|
|||
|
EXOP_EVENT, CODEOBJ,
|
|||
|
EXOP_CONDREFOF, CODEOBJ,
|
|||
|
EXOP_CREATEFIELD, CODEOBJ,
|
|||
|
EXOP_LOAD, CODEOBJ,
|
|||
|
EXOP_STALL, CODEOBJ,
|
|||
|
EXOP_SLEEP, CODEOBJ,
|
|||
|
EXOP_ACQUIRE, CODEOBJ,
|
|||
|
EXOP_SIGNAL, CODEOBJ,
|
|||
|
EXOP_WAIT, CODEOBJ,
|
|||
|
EXOP_RESET, CODEOBJ,
|
|||
|
EXOP_RELEASE, CODEOBJ,
|
|||
|
EXOP_FROMBCD, CODEOBJ,
|
|||
|
EXOP_TOBCD, CODEOBJ,
|
|||
|
EXOP_UNLOAD, CODEOBJ,
|
|||
|
EXOP_REVISION, CODEOBJ,
|
|||
|
EXOP_DEBUG, CODEOBJ,
|
|||
|
EXOP_FATAL, CODEOBJ,
|
|||
|
EXOP_OPREGION, CODEOBJ,
|
|||
|
EXOP_FIELD, CODEOBJ,
|
|||
|
EXOP_DEVICE, CODEOBJ,
|
|||
|
EXOP_PROCESSOR, CODEOBJ,
|
|||
|
EXOP_POWERRES, CODEOBJ,
|
|||
|
EXOP_THERMALZONE, CODEOBJ,
|
|||
|
EXOP_IDXFIELD, CODEOBJ,
|
|||
|
EXOP_BANKFIELD, CODEOBJ,
|
|||
|
0, 0
|
|||
|
};
|