mirror of https://github.com/lianthony/NT4.0
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.
194 lines
7.8 KiB
194 lines
7.8 KiB
|
|
#include "asl.h"
|
|
|
|
|
|
extern VOID DefinitionBlkOp (VOID);
|
|
extern VOID IncludeTok (VOID);
|
|
extern VOID DefineTok (VOID);
|
|
extern VOID NumOp (VOID);
|
|
extern VOID StringOp (VOID);
|
|
extern VOID BufferOp (VOID);
|
|
extern VOID PackageOp (VOID);
|
|
extern VOID IsZeroOp (VOID);
|
|
extern VOID Vnone (VOID);
|
|
extern VOID AliasOp (VOID);
|
|
extern VOID NameOp (VOID);
|
|
extern VOID ScopeOp (VOID);
|
|
extern VOID MethodOp (VOID);
|
|
extern VOID EventOp (VOID);
|
|
extern VOID MutexOp (VOID);
|
|
extern VOID RegionOp (VOID);
|
|
extern VOID FieldOp (VOID);
|
|
extern VOID DeviceOp (VOID);
|
|
extern VOID ProcessorOp (VOID);
|
|
extern VOID PowerResourceOp (VOID);
|
|
extern VOID ThermalZoneOp (VOID);
|
|
extern VOID VSn (VOID);
|
|
extern VOID VOp (VOID);
|
|
extern VOID VSnOp (VOID);
|
|
extern VOID VOpSn (VOID);
|
|
extern VOID VOpOp (VOID);
|
|
extern VOID VOpOpSn (VOID);
|
|
extern VOID VOpOpOp (VOID);
|
|
extern VOID VOpOpSnSn (VOID);
|
|
extern VOID VOpOpOpSn (VOID);
|
|
extern VOID IfOp (VOID);
|
|
extern VOID ElseOp (VOID);
|
|
extern VOID WhileOp (VOID);
|
|
extern VOID LoadOp (VOID);
|
|
extern VOID StallOp (VOID);
|
|
extern VOID SleepOp (VOID);
|
|
extern VOID FatalOp (VOID);
|
|
|
|
|
|
#define PKG T_VARIABLE
|
|
#define OP T_OPCODE
|
|
#define SN T_SUPERNAME
|
|
#define DT T_DEFDATA
|
|
#define PA T_PARSEARGS // parse when args complete (requires T_VARIABLE!)
|
|
#define PC T_PARSECOMPLETE // parse when complete
|
|
|
|
ASL_TERM AslTerms[] = {
|
|
// Internal ASL terms
|
|
|
|
"Include", 0x00, 0x00, PC, IncludeTok,
|
|
"Define", 0x00, 0x00, PC, DefineTok,
|
|
"DefinitionBlock", 0x00, 0x00, PA|PKG, DefinitionBlkOp,
|
|
|
|
|
|
//
|
|
"Num", 0x00, 0x00, PC|OP|DT, NumOp,
|
|
"String", 0x0D, 0x00, PC|OP|DT, StringOp,
|
|
"Buffer", 0x11, 0x00, PC|OP|DT|PKG, BufferOp,
|
|
"Package", 0x12, 0x00, PC|OP|DT|PKG, PackageOp,
|
|
|
|
// ASL terms which map to AML
|
|
"Zero", 0x00, 0x00, PC|SN, IsZeroOp,
|
|
"One", 0x01, 0x00, PC|SN, Vnone,
|
|
"Revision", 0x5B, 0x30, PC|SN, Vnone,
|
|
"Debug", 0x5B, 0x31, PC|SN, Vnone,
|
|
"Local0", 0x60, 0x00, PC|SN, Vnone,
|
|
"Local1", 0x61, 0x00, PC|SN, Vnone,
|
|
"Local2", 0x62, 0x00, PC|SN, Vnone,
|
|
"Local3", 0x63, 0x00, PC|SN, Vnone,
|
|
"Local4", 0x64, 0x00, PC|SN, Vnone,
|
|
"Local5", 0x65, 0x00, PC|SN, Vnone,
|
|
"Local6", 0x66, 0x00, PC|SN, Vnone,
|
|
"Local7", 0x67, 0x00, PC|SN, Vnone,
|
|
"Arg0", 0x68, 0x00, PC|SN, Vnone,
|
|
"Arg1", 0x69, 0x00, PC|SN, Vnone,
|
|
"Arg2", 0x6A, 0x00, PC|SN, Vnone,
|
|
"Arg3", 0x6B, 0x00, PC|SN, Vnone,
|
|
"Arg4", 0x6C, 0x00, PC|SN, Vnone,
|
|
"Arg5", 0x6D, 0x00, PC|SN, Vnone,
|
|
"Arg6", 0x6E, 0x00, PC|SN, Vnone,
|
|
"Ones", 0xFF, 0x00, PC|SN, Vnone,
|
|
|
|
"Alias", 0x06, 0x00, PC, AliasOp,
|
|
"Name", 0x08, 0x00, PC, NameOp,
|
|
"Scope", 0x10, 0x00, PA|PKG, ScopeOp,
|
|
"Method", 0x14, 0x00, PA|PC|PKG, MethodOp,
|
|
"Mutex", 0x5B, 0x01, PC, MutexOp,
|
|
"Event", 0x5B, 0x02, PC, EventOp,
|
|
"OperationRegion", 0x5B, 0x80, PA|PKG, RegionOp,
|
|
"Field", 0x5B, 0x81, PA|PC|PKG, FieldOp,
|
|
"Device", 0x5B, 0x82, PA|PKG, DeviceOp,
|
|
"Processor", 0x5B, 0x83, PA|PKG, ProcessorOp,
|
|
"PowerResource", 0x5B, 0x84, PA|PKG, PowerResourceOp,
|
|
"ThermalZone", 0x5B, 0x85, PA|PKG, ThermalZoneOp,
|
|
|
|
"Store", 0x70, 0x00, PC|OP, VOpSn,
|
|
"StoreRef", 0x71, 0x00, PC|OP, VOpSn,
|
|
"Add", 0x72, 0x00, PC|OP, VOpOpSn,
|
|
"Concatenate", 0x73, 0x00, PC|OP, VOpOpSn,
|
|
"Subtract", 0x74, 0x00, PC|OP, VOpOpSn,
|
|
"Increment", 0x75, 0x00, PC|OP, VSn,
|
|
"Decrement", 0x76, 0x00, PC|OP, VSn,
|
|
"Multiple", 0x77, 0x00, PC|OP, VOpOpSn,
|
|
"Divide", 0x78, 0x00, PC|OP, VOpOpSnSn,
|
|
"ShiftRight", 0x79, 0x00, PC|OP, VOpOpSn,
|
|
"ShiftLeft", 0x7A, 0x00, PC|OP, VOpOpSn,
|
|
"FirstSetLeftBit", 0x5B, 0x10, PC|OP, VOpSn,
|
|
"FirstSetRightBit", 0x5B, 0x11, PC|OP, VOpSn,
|
|
"And", 0x7B, 0x00, PC|OP, VOpOpSn,
|
|
"NAnd", 0x7C, 0x00, PC|OP, VOpOpSn,
|
|
"Or", 0x7D, 0x00, PC|OP, VOpOpSn,
|
|
"Nor", 0x7E, 0x00, PC|OP, VOpOpSn,
|
|
"Xor", 0x7F, 0x00, PC|OP, VOpOpSn,
|
|
"CondStoreRef", 0x5B, 0x12, PC|OP, VOpSn,
|
|
"Index", 0x88, 0x00, PC|OP, VOpOp,
|
|
"Match", 0x89, 0x00, PC|OP, VOpOpOp,
|
|
"CreateField", 0x5B, 0x13, PC|OP, VOpOpOpSn,
|
|
"CreateDWordField", 0x8A, 0x00, PC|OP, VOpOpSn,
|
|
"CreateWordField", 0x8B, 0x00, PC|OP, VOpOpSn,
|
|
"CreateByteField", 0x8C, 0x00, PC|OP, VOpOpSn,
|
|
"CreateBitField", 0x8D, 0x00, PC|OP, VOpOpSn,
|
|
"ObjectType", 0x8E, 0x00, PC|OP, VSn,
|
|
"LAnd", 0x90, 0x00, PC|OP, VOpOp,
|
|
"LOr", 0x91, 0x00, PC|OP, VOpOp,
|
|
"LNot", 0x92, 0x00, PC|OP, VOp,
|
|
"LEqual", 0x93, 0x00, PC|OP, VOpOp,
|
|
"LGreater", 0x94, 0x00, PC|OP, VOpOp,
|
|
"LLess", 0x95, 0x00, PC|OP, VOpOp,
|
|
"LGreaterEqual", 0x92, 0x95, PC|OP, VOpOp, // Not Less
|
|
"LLessEqual", 0x92, 0x94, PC|OP, VOpOp, // Not Greater
|
|
"If", 0xA0, 0x00, PC|OP|PKG, IfOp,
|
|
"Else", 0xA1, 0x00, PC|OP|PKG, ElseOp,
|
|
"While", 0xA2, 0x00, PC|OP|PKG, WhileOp,
|
|
"Break", 0xA3, 0x00, PC|OP, Vnone,
|
|
"Return", 0xA4, 0x00, PC|OP, VOp,
|
|
|
|
"Load", 0x5B, 0x20, PC|OP, LoadOp,
|
|
"Stall", 0x5B, 0x21, PC|OP, StallOp,
|
|
"Sleep", 0x5B, 0x22, PC|OP, SleepOp,
|
|
"Acquire", 0x5B, 0x23, PC|OP, VSnOp,
|
|
"Wait", 0x5B, 0x23, PC|OP, VSnOp, // same as acquire
|
|
"Release", 0x5B, 0x24, PC|OP, VSn,
|
|
"Signal", 0x5B, 0x24, PC|OP, VSn, // same as release
|
|
"Reset", 0x5B, 0x25, PC|OP, VSn,
|
|
"Notify", 0x5B, 0x36, PC|OP, VSnOp,
|
|
// call PC|
|
|
// chainedcall PC|
|
|
"FromBCD", 0x5B, 0x27, PC|OP, VOpSn,
|
|
"ToBCD", 0x5B, 0x27, PC|OP, VOpSn,
|
|
"Fatal", 0x5B, 0x31, PC|OP, FatalOp,
|
|
NULL
|
|
} ;
|
|
|
|
|
|
|
|
ARGMATCH
|
|
PackageTypes[] = {
|
|
"SystemMemory", 0,
|
|
"SystemIO", 1,
|
|
"PCI_Config", 2,
|
|
"EmbeddedControl", 3,
|
|
NULL
|
|
} ;
|
|
|
|
ARGMATCH
|
|
FieldWidth[] = {
|
|
"AccessAsByte", 0,
|
|
"AccessAsWord", 1,
|
|
"AccessAsDWord", 2,
|
|
"AccessAsAny", 3,
|
|
"", 3,
|
|
NULL
|
|
} ;
|
|
|
|
ARGMATCH
|
|
FieldLock[] = {
|
|
"", 0,
|
|
"NoLock", 0,
|
|
"UseGlobalLock", 1,
|
|
NULL
|
|
} ;
|
|
|
|
ARGMATCH
|
|
FieldAccess[] = {
|
|
"", 0,
|
|
"Preserve", 0,
|
|
"WriteZeros", 1,
|
|
"WriteOnes", 2,
|
|
NULL
|
|
} ;
|