windows-nt/Source/XPSP1/NT/base/tools/kdexts2/amlikd.h
2020-09-26 16:20:57 +08:00

712 lines
25 KiB
C

/*++
Copyright (c) 1993-2001 Microsoft Corporation
Module Name:
amlikd.h
Abstract:
This header file (re)defines various flags used by the amli extension. These definitions
are copied from different header files in the acpi and acpi kd ext dirs.
--*/
#ifndef _AMLIKD_
#define _AMLIKD_
/*** Defn's
*/
#define ConPrintf dprintf
#define MZERO MemZero
#define ADDROF(s) GetExpression("ACPI!" s)
#define FIELDADDROF(s,t,f) (PULONG64)(ADDROF(s) + FIELD_OFFSET(t, f))
#define READMEMBYTE ReadMemByte
#define READMEMWORD ReadMemWord
#define READMEMDWORD ReadMemDWord
#define READMEMULONGPTR ReadMemUlongPtr
#define READSYMBYTE(s) ReadMemByte(ADDROF(s))
#define READSYMWORD(s) ReadMemWord(ADDROF(s))
#define READSYMDWORD(s) ReadMemDWord(ADDROF(s))
#define READSYMULONGPTR(s) ReadMemUlongPtr(ADDROF(s))
#define WRITEMEMBYTE(a,d) WriteMemory(a, &(d), sizeof(BYTE), NULL)
#define WRITEMEMWORD(a,d) WriteMemory(a, &(d), sizeof(WORD), NULL)
#define WRITEMEMDWORD(a,d) WriteMemory(a, &(d), sizeof(DWORD), NULL)
#define WRITEMEMULONGPTR(a,d) WriteMemory(a, &(d), sizeof(ULONG_PTR), NULL)
#define WRITESYMBYTE(s,d) WRITEMEMBYTE(ADDROF(s), d)
#define WRITESYMWORD(s,d) WRITEMEMWORD(ADDROF(s), d)
#define WRITESYMDWORD(s,d) WRITEMEMDWORD(ADDROF(s), d)
#define WRITESYMULONGPTR(s,d) WRITEMEMULONGPTR(ADDROF(s), d)
#define EXOP(op) (((op) << 8) | OP_EXT_PREFIX)
#define LOCAL __cdecl
#define STDCALL __stdcall
#define MODNAME "AMLI"
#define DBG_ERROR(x) ConPrintf(MODNAME "_DBGERR: "); \
ConPrintf x; \
ConPrintf("\n");
#define ARG_ERROR(x) ConPrintf(MODNAME "_ARGERR: "); \
ConPrintf x; \
ConPrintf("\n");
#define DEREF(x) ((x) = (x))
#define ISLOWER(c) (((c) >= 'a') && ((c) <= 'z'))
#define TOUPPER(c) ((CHAR)(ISLOWER(c)? ((c) & 0xdf): (c)))
#define MEMCPY RtlCopyMemory
#define MEMZERO RtlZeroMemory
#define STRCPY(s1,s2) StrCpy(s1, s2, (ULONG)(-1))
#define STRCPYN(s1,s2,n) StrCpy(s1, s2, (ULONG)(n))
#define MAX_NAME_LEN 255
#define NAMESEG_ROOT 0x5f5f5f5c // "\___"
#define NAMESEG_BLANK 0x5f5f5f5f // "____"
#define NAMESEG_NONE 0x00000000 // ""
#define NAMESTR_ROOT "\\"
// DNS flags
#define DNSF_RECURSE 0x00000001
// DS flags
#define DSF_VERBOSE 0x00000001
// dwfDebug flags
#define DBGF_IN_DEBUGGER 0x00000001
#define DBGF_IN_VXDMODE 0x00000002
#define DBGF_IN_KDSHELL 0x00000004
#define DBGF_VERBOSE_ON 0x00000008
#define DBGF_AMLTRACE_ON 0x00000010
#define DBGF_TRIGGER_MODE 0x00000020
#define DBGF_SINGLE_STEP 0x00000040
#define DBGF_STEP_OVER 0x00000080
#define DBGF_STEP_MODES (DBGF_SINGLE_STEP | DBGF_STEP_OVER)
#define DBGF_TRACE_NONEST 0x00000100
#define DBGF_DUMPDATA_PHYADDR 0x00000200
#define DBGF_DEBUGGER_REQ 0x00001000
#define DBGF_CHECKING_TRACE 0x00002000
#define DBGF_ERRBREAK_ON 0x00004000
#define DBGF_LOGEVENT_ON 0x00008000
#define DBGF_LOGEVENT_MUTEX 0x00010000
#define DBGF_DEBUG_SPEW_ON 0x00020000
// dwfAMLIInit flags
#define AMLIIF_INIT_BREAK 0x00000001 //break at AMLIInit completion
#define AMLIIF_LOADDDB_BREAK 0x00000002 //break at LoadDDB completion
#define AMLIIF_NOCHK_TABLEVER 0x80000000 //do not check table version
// Error codes
#define UNASMERR_NONE 0
#define UNASMERR_FATAL -1
#define UNASMERR_INVALID_OPCODE -2
#define UNASMERR_ABORT -3
// Opcode classes
#define OPCLASS_INVALID 0
#define OPCLASS_DATA_OBJ 1
#define OPCLASS_NAME_OBJ 2
#define OPCLASS_CONST_OBJ 3
#define OPCLASS_CODE_OBJ 4
#define OPCLASS_ARG_OBJ 5
#define OPCLASS_LOCAL_OBJ 6
// NameSpace object types
#define NSTYPE_UNKNOWN 'U'
#define NSTYPE_SCOPE 'S'
#define NSTYPE_FIELDUNIT 'F'
#define NSTYPE_DEVICE 'D'
#define NSTYPE_EVENT 'E'
#define NSTYPE_METHOD 'M'
#define NSTYPE_MUTEX 'X'
#define NSTYPE_OPREGION 'O'
#define NSTYPE_POWERRES 'P'
#define NSTYPE_PROCESSOR 'C'
#define NSTYPE_THERMALZONE 'T'
#define NSTYPE_OBJALIAS 'A'
#define NSTYPE_BUFFFIELD 'B'
// Term classes
#define UTC_PNP_MACRO 0x00100000
#define UTC_REF_OBJECT 0x00200000
#define UTC_FIELD_MACRO 0x00400000
#define UTC_DATA_OBJECT 0x00800000
#define UTC_NAMED_OBJECT 0x01000000
#define UTC_NAMESPACE_MODIFIER 0x02000000
#define UTC_OPCODE_TYPE1 0x04000000
#define UTC_OPCODE_TYPE2 0x08000000
#define UTC_CONST_NAME 0x10000000
#define UTC_SHORT_NAME 0x20000000
#define UTC_COMPILER_DIRECTIVE 0x40000000
#define UTC_KEYWORD 0x80000000
#define UTC_OPCODE (UTC_OPCODE_TYPE1 | UTC_OPCODE_TYPE2 | \
UTC_SHORT_NAME | UTC_CONST_NAME | \
UTC_DATA_OBJECT)
// Term flags
#define TF_ACTION_FLIST 0x00000001
#define TF_ACTION_VLIST 0x00000002
#define TF_PACKAGE_LEN 0x00000004
#define TF_CHANGE_CHILDSCOPE 0x00000008
#define TF_DELAY_UNASM 0x00000010
#define TF_FIELD_MACRO UTC_FIELD_MACRO
#define TF_DATA_OBJECT UTC_DATA_OBJECT
#define TF_NAMED_OBJECT UTC_NAMED_OBJECT
#define TF_NAMESPACE_MODIFIER UTC_NAMESPACE_MODIFIER
#define TF_OPCODE_TYPE1 UTC_OPCODE_TYPE1
#define TF_OPCODE_TYPE2 UTC_OPCODE_TYPE2
#define TF_CONST_NAME UTC_CONST_NAME
#define TF_SHORT_NAME UTC_SHORT_NAME
#define TF_COMPILER_DIRECTIVE UTC_COMPILER_DIRECTIVE
#define TF_KEYWORD UTC_KEYWORD
#define TF_PNP_MACRO UTC_PNP_MACRO
#define TF_OBJECT_LIST (UTC_NAMED_OBJECT | UTC_NAMESPACE_MODIFIER)
#define TF_CODE_LIST (UTC_OPCODE_TYPE1 | UTC_OPCODE_TYPE2)
#define TF_DATA_LIST 0x00010000
#define TF_FIELD_LIST 0x00020000
#define TF_BYTE_LIST 0x00040000
#define TF_DWORD_LIST 0x00080000
#define TF_PACKAGE_LIST (UTC_DATA_OBJECT | UTC_SHORT_NAME | \
UTC_CONST_NAME)
#define TF_ALL_LISTS (TF_DATA_OBJECT | TF_NAMED_OBJECT | \
TF_NAMESPACE_MODIFIER | TF_OPCODE_TYPE1 | \
TF_OPCODE_TYPE2 | TF_SHORT_NAME | \
TF_CONST_NAME | TF_COMPILER_DIRECTIVE | \
TF_DATA_LIST | TF_PACKAGE_LIST | \
TF_FIELD_LIST | TF_PNP_MACRO | TF_BYTE_LIST |\
TF_DWORD_LIST)
/*** Opcode values
*/
#define OP_NONE 0xffffffff //not a valid opcode
#define OP_ZERO 0x00
#define OP_ONE 0x01
#define OP_ALIAS 0x06
#define OP_NAME 0x08
#define OP_BYTE 0x0a
#define OP_WORD 0x0b
#define OP_DWORD 0x0c
#define OP_STRING 0x0d
#define OP_SCOPE 0x10
#define OP_BUFFER 0x11
#define OP_PACKAGE 0x12
#define OP_METHOD 0x14
#define OP_DUAL_NAME_PREFIX 0x2e // '.'
#define OP_MULTI_NAME_PREFIX 0x2f // '/'
#define OP_EXT_PREFIX 0x5b // '['
#define OP_ROOT_PREFIX 0x5c // '\'
#define OP_PARENT_PREFIX 0x5e // '^'
#define OP_LOCAL0 0x60 // '`'
#define OP_LOCAL1 0x61 // 'a'
#define OP_LOCAL2 0x62 // 'b'
#define OP_LOCAL3 0x63 // 'c'
#define OP_LOCAL4 0x64 // 'd'
#define OP_LOCAL5 0x65 // 'e'
#define OP_LOCAL6 0x66 // 'f'
#define OP_LOCAL7 0x67 // 'g'
#define OP_ARG0 0x68 // 'h'
#define OP_ARG1 0x69 // 'i'
#define OP_ARG2 0x6a // 'j'
#define OP_ARG3 0x6b // 'k'
#define OP_ARG4 0x6c // 'l'
#define OP_ARG5 0x6d // 'm'
#define OP_ARG6 0x6e // 'n'
#define OP_STORE 0x70 // 'p'
#define OP_REFOF 0x71
#define OP_ADD 0x72
#define OP_CONCAT 0x73
#define OP_SUBTRACT 0x74
#define OP_INCREMENT 0x75
#define OP_DECREMENT 0x76
#define OP_MULTIPLY 0x77
#define OP_DIVIDE 0x78
#define OP_SHIFTL 0x79
#define OP_SHIFTR 0x7a
#define OP_AND 0x7b
#define OP_NAND 0x7c
#define OP_OR 0x7d
#define OP_NOR 0x7e
#define OP_XOR 0x7f
#define OP_NOT 0x80
#define OP_FINDSETLBIT 0x81
#define OP_FINDSETRBIT 0x82
#define OP_DEREFOF 0x83
#define OP_NOTIFY 0x86
#define OP_SIZEOF 0x87
#define OP_INDEX 0x88
#define OP_MATCH 0x89
#define OP_DWORDFIELD 0x8a
#define OP_WORDFIELD 0x8b
#define OP_BYTEFIELD 0x8c
#define OP_BITFIELD 0x8d
#define OP_OBJTYPE 0x8e
#define OP_LAND 0x90
#define OP_LOR 0x91
#define OP_LNOT 0x92
#define OP_LNOTEQ 0x9392
#define OP_LLEQ 0x9492
#define OP_LGEQ 0x9592
#define OP_LEQ 0x93
#define OP_LG 0x94
#define OP_LL 0x95
#define OP_IF 0xa0
#define OP_ELSE 0xa1
#define OP_WHILE 0xa2
#define OP_NOP 0xa3
#define OP_RETURN 0xa4
#define OP_BREAK 0xa5
#define OP_OSI 0xca
#define OP_BREAKPOINT 0xcc
#define OP_ONES 0xff
#define EXOP_MUTEX 0x01
#define EXOP_EVENT 0x02
#define EXOP_CONDREFOF 0x12
#define EXOP_CREATEFIELD 0x13
#define EXOP_LOAD 0x20
#define EXOP_STALL 0x21
#define EXOP_SLEEP 0x22
#define EXOP_ACQUIRE 0x23
#define EXOP_SIGNAL 0x24
#define EXOP_WAIT 0x25
#define EXOP_RESET 0x26
#define EXOP_RELEASE 0x27
#define EXOP_FROMBCD 0x28
#define EXOP_TOBCD 0x29
#define EXOP_UNLOAD 0x2a
#define EXOP_REVISION 0x30
#define EXOP_DEBUG 0x31
#define EXOP_FATAL 0x32
#define EXOP_OPREGION 0x80
#define EXOP_FIELD 0x81
#define EXOP_DEVICE 0x82
#define EXOP_PROCESSOR 0x83
#define EXOP_POWERRES 0x84
#define EXOP_THERMALZONE 0x85
#define EXOP_IDXFIELD 0x86
#define EXOP_BANKFIELD 0x87
#define OP_MUTEX EXOP(EXOP_MUTEX)
#define OP_EVENT EXOP(EXOP_EVENT)
#define OP_CONDREFOF EXOP(EXOP_CONDREFOF)
#define OP_CREATEFIELD EXOP(EXOP_CREATEFIELD)
#define OP_LOAD EXOP(EXOP_LOAD)
#define OP_STALL EXOP(EXOP_STALL)
#define OP_SLEEP EXOP(EXOP_SLEEP)
#define OP_ACQUIRE EXOP(EXOP_ACQUIRE)
#define OP_SIGNAL EXOP(EXOP_SIGNAL)
#define OP_WAIT EXOP(EXOP_WAIT)
#define OP_RESET EXOP(EXOP_RESET)
#define OP_RELEASE EXOP(EXOP_RELEASE)
#define OP_FROMBCD EXOP(EXOP_FROMBCD)
#define OP_TOBCD EXOP(EXOP_TOBCD)
#define OP_UNLOAD EXOP(EXOP_UNLOAD)
#define OP_REVISION EXOP(EXOP_REVISION)
#define OP_DEBUG EXOP(EXOP_DEBUG)
#define OP_FATAL EXOP(EXOP_FATAL)
#define OP_OPREGION EXOP(EXOP_OPREGION)
#define OP_FIELD EXOP(EXOP_FIELD)
#define OP_DEVICE EXOP(EXOP_DEVICE)
#define OP_PROCESSOR EXOP(EXOP_PROCESSOR)
#define OP_POWERRES EXOP(EXOP_POWERRES)
#define OP_THERMALZONE EXOP(EXOP_THERMALZONE)
#define OP_IDXFIELD EXOP(EXOP_IDXFIELD)
#define OP_BANKFIELD EXOP(EXOP_BANKFIELD)
/*** Field flags
*/
#define ACCTYPE_MASK 0x0f
#define ACCTYPE_ANY 0x00 //AnyAcc
#define ACCTYPE_BYTE 0x01 //ByteAcc
#define ACCTYPE_WORD 0x02 //WordAcc
#define ACCTYPE_DWORD 0x03 //DWordAcc
#define ACCTYPE_BLOCK 0x04 //BlockAcc
#define ACCTYPE_SMBSENDRECV 0x05 //SMBSendRecvAcc
#define ACCTYPE_SMBQUICK 0x06 //SMBQuickAcc
#define LOCKRULE_MASK 0x10
#define LOCKRULE_NOLOCK 0x00 //NoLock
#define LOCKRULE_LOCK 0x10 //Lock
#define UPDATERULE_MASK 0x60
#define UPDATERULE_PRESERVE 0x00 //Preserve
#define UPDATERULE_WRITEASONES 0x20 //WriteAsOnes
#define UPDATERULE_WRITEASZEROS 0x40 //WriteAsZeros
//
// Returns 1, 2 or 4 for BYTE, WORD or DWORD respectively and returns 1 for
// any other sizes.
//
#define ACCSIZE(f) (((((f) & ACCTYPE_MASK) >= ACCTYPE_BYTE) && \
(((f) & ACCTYPE_MASK) <= ACCTYPE_DWORD))? \
(1 << (((f) & ACCTYPE_MASK) - 1)): 1)
/*** Operation region space
*/
#define REGSPACE_MEM 0 //SystemMemory
#define REGSPACE_IO 1 //SystemIO
#define REGSPACE_PCICFG 2 //PCI_Config
#define REGSPACE_EC 3 //EmbeddedControl
#define REGSPACE_SMB 4 //SMBus
#define REGSPACE_CMOSCFG 5 //Cmos_Config
#define REGSPACE_PCIBARTARGET 6 //PCIBARTarget
/*** Method flags
*/
#define METHOD_NUMARG_MASK 0x07
#define METHOD_SYNCMASK 0x08
#define METHOD_NOTSERIALIZED 0x00
#define METHOD_SERIALIZED 0x08
/*** Match operation values
*/
#define MTR 0
#define MEQ 1
#define MLE 2
#define MLT 3
#define MGE 4
#define MGT 5
/*** IRQ Flags for short descriptor
*/
#define _HE 0x01 //ActiveHigh, EdgeTrigger
#define _LL 0x08 //ActiveLow, LevelTrigger
#define _SHR 0x10 //Shared
#define _EXC 0x00 //Exclusive
/*** IRQ Flags for long descriptor
*/
#define $EDG 0x02 //EdgeTrigger
#define $LVL 0x00 //LevelTrigger
#define $LOW 0x04 //ActiveLow
#define $HGH 0x00 //ActiveHigh
#define $SHR 0x08 //Shared
#define $EXC 0x00 //Exclusive
/*** DMA Flags
*/
#define X8 0x00 //Transfer8
#define X816 0x01 //Transfer8_16
#define X16 0x02 //Transfer16
#define NOBM 0x00 //NotBusMaster
#define BM 0x04 //BusMaster
#define COMP 0x00 //Compatibility
#define TYPA 0x20 //TypeA
#define TYPB 0x40 //TypeB
#define TYPF 0x60 //TypeF
/*** IO Flags
*/
#define DC16 0x01 //Decode16
#define DC10 0x00 //Decode10
/*** Memory Flags
*/
#define _RW 0x01 //Read/Write
#define _ROM 0x00 //Read only
/*** Address Space Descriptor General Flags
*/
#define RCS 0x01 //Resource Consumer
#define RPD 0x00 //Resource Producer
#define BSD 0x02 //Bridge Subtractive Decode
#define BPD 0x00 //Bridge Positive Decode
#define MIF 0x04 //Min address is fixed
#define NMIF 0x00 //Min address is not fixed
#define MAF 0x08 //Max address is fixed
#define NMAF 0x00 //Max address is not fixed
/*** Memory Address Space Flags
*/
#define CACH 0x02 //Cacheable
#define WRCB 0x04 //WriteCombining
#define PREF 0x06 //Prefetchable
#define NCAC 0x00 //Non-Cacheable
/*** IO Address Space Flags
*/
#define ISA 0x02 //ISAOnly ranges
#define NISA 0x01 //NonISAOnly ranges
#define ERNG 0x03 //Entire range
#define MAX_ARGS 7
#define MAX_NSPATH_LEN 1275 //approx. 255*4 + 255 (255 NameSegs)
//
// 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 ABLK (ACCTYPE_BLOCK | (ACCTYPE_MASK << 8))
#define ASSR (ACCTYPE_SMBSENDRECV | (ACCTYPE_MASK << 8))
#define ASQ (ACCTYPE_SMBQUICK | (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))
//
// 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)
#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
// Error codes
#define ARGERR_NONE 0
#define ARGERR_SEP_NOT_FOUND -1
#define ARGERR_INVALID_NUMBER -2
#define ARGERR_INVALID_ARG -3
#define ARGERR_ASSERT_FAILED -4
// Command argument flags
#define AF_NOI 0x00000001 //NoIgnoreCase
#define AF_SEP 0x00000002 //require separator
// Command argument types
#define AT_END 0 //end marker of arg table
#define AT_STRING 1
#define AT_NUM 2
#define AT_ENABLE 3
#define AT_DISABLE 4
#define AT_ACTION 5
// Debugger error codes
#define DBGERR_NONE 0
#define DBGERR_QUIT -1
#define DBGERR_INVALID_CMD -2
#define DBGERR_PARSE_ARGS -3
#define DBGERR_CMD_FAILED -4
#define DBGERR_INTERNAL_ERR -5
// dwfFlags for AMLIGetNameSpaceObject
#define NSF_LOCAL_SCOPE 0x00000001
// dwfNS local flags
#define NSF_EXIST_OK 0x00010000 //for CreateNameSpaceObject
#define NSF_WARN_NOTFOUND 0x80000000 //for GetNameSpaceObject
/*** Type definitions
*/
typedef CHAR *PSZ;
typedef ULONG NAMESEG;
typedef UCHAR *PUCHAR;
typedef struct _cmdarg CMDARG;
typedef CMDARG *PCMDARG;
typedef LONG (LOCAL *PFNARG)(PCMDARG, PSZ, ULONG, ULONG);
struct _cmdarg
{
PSZ pszArgID; //argument ID string
ULONG dwArgType; //AT_*
ULONG dwfArg; //AF_*
PVOID pvArgData; //AT_END: none
//AT_STRING: PPSZ - ptr. to string ptr.
//AT_NUM: PLONG - ptr. to number
//AT_ENABLE: PULONG - ptr. to flags
//AT_DISABLE: PULONG - ptr. to flags
//AT_ACTION: none
ULONG dwArgParam; //AT_END: none
//AT_STRING: none
//AT_NUM: base
//AT_ENABLE: flag bit mask
//AT_DISABLE: flag bit mask
//AT_ACTION: none
PFNARG pfnArg; //ptr. to argument verification function or
// action function if AT_ACTION
};
typedef struct _dbgcmd
{
PSZ pszCmd;
ULONG dwfCmd;
PCMDARG pArgTable;
PFNARG pfnCmd;
} DBGCMD, *PDBGCMD;
typedef struct _aslterm
{
PUCHAR ID;
ULONG TermClass;
ULONG TermData;
ULONG OpCode;
PUCHAR UnAsmArgTypes;
PUCHAR ArgActions;
ULONG Flags;
} ASLTERM, *PASLTERM;
typedef struct _opmap
{
UCHAR ExtendedOpCode;
UCHAR OpCodeClass;
} OPMAP, *POPMAP;
//dwDataType values
typedef enum _OBJTYPES {
OBJTYPE_UNKNOWN = 0,
OBJTYPE_INTDATA,
OBJTYPE_STRDATA,
OBJTYPE_BUFFDATA,
OBJTYPE_PKGDATA,
OBJTYPE_FIELDUNIT,
OBJTYPE_DEVICE,
OBJTYPE_EVENT,
OBJTYPE_METHOD,
OBJTYPE_MUTEX,
OBJTYPE_OPREGION,
OBJTYPE_POWERRES,
OBJTYPE_PROCESSOR,
OBJTYPE_THERMALZONE,
OBJTYPE_BUFFFIELD,
OBJTYPE_DDBHANDLE,
OBJTYPE_DEBUG,
//These are internal object types (not to be exported to the ASL code)
OBJTYPE_INTERNAL = 0x80,
OBJTYPE_OBJALIAS = 0x80,
OBJTYPE_DATAALIAS,
OBJTYPE_BANKFIELD,
OBJTYPE_FIELD,
OBJTYPE_INDEXFIELD,
OBJTYPE_DATA,
OBJTYPE_DATAFIELD,
OBJTYPE_DATAOBJ,
} OBJTYPES;
/*** Local function prototypes
*/
LONG LOCAL AMLIDbgDebugger(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
LONG LOCAL AMLIDbgDNS(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
LONG LOCAL DumpNSObj(PSZ pszPath, BOOLEAN fRecursive);
VOID LOCAL DumpNSTree(PULONG64 pnsObj, ULONG dwLevel);
LONG LOCAL AMLIDbgFind(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
BOOLEAN LOCAL FindNSObj(NAMESEG dwName, PULONG64 pnsRoot);
PSZ LOCAL GetObjectPath(PULONG64 pns);
PSZ LOCAL GetObjAddrPath(ULONG64 uipns);
VOID LOCAL AMLIDumpObject(PULONG64 pdata, PSZ pszName, int iLevel);
PSZ LOCAL AMLIGetObjectTypeName(ULONG dwObjType);
PSZ LOCAL GetRegionSpaceName(UCHAR bRegionSpace);
BOOLEAN LOCAL FindObjSymbol(ULONG64 uipObj, PULONG64 puipns, PULONG pdwOffset);
VOID LOCAL PrintBuffData(PUCHAR pb, ULONG dwLen);
BOOLEAN LOCAL IsNumber(PSZ pszStr, ULONG dwBase, PULONG64 puipValue);
LONG LOCAL DbgParseArgs(PCMDARG ArgTable, PULONG pdwNumArgs, PULONG pdwNonSWArgs, PSZ pszTokenSeps);
LONG LOCAL DbgParseOneArg(PCMDARG ArgTable, PSZ psz, ULONG dwArgNum, PULONG pdwNonSWArgs);
PCMDARG LOCAL DbgMatchArg(PCMDARG ArgTable, PSZ *ppsz, PULONG pdwNonSWArgs);
VOID MemZero(ULONG64 uipAddr, ULONG dwSize);
BYTE ReadMemByte(ULONG64 uipAddr);
WORD ReadMemWord(ULONG64 uipAddr);
DWORD ReadMemDWord(ULONG64 uipAddr);
ULONG_PTR ReadMemUlongPtr(ULONG64 uipAddr);
PVOID LOCAL GetObjBuff(PULONG64 pdata);
LONG LOCAL GetNSObj(PSZ pszObjPath, PULONG64 pnsScope, PULONG64 puipns, PULONG64 pns, ULONG dwfNS);
PSZ LOCAL NameSegString(ULONG dwNameSeg);
VOID STDCALL AMLIDbgExecuteCmd(PSZ pszCmd);
LONG LOCAL AMLIDbgHelp(PCMDARG pArg, PSZ pszArg, ULONG dwArgNum, ULONG dwNonSWArgs);
PSZ LOCAL StrCat(PSZ pszDst, PSZ pszSrc, ULONG n);
ULONG LOCAL StrLen(PSZ psz, ULONG n);
LONG LOCAL StrCmp(PSZ psz1, PSZ psz2, ULONG n, BOOLEAN fMatchCase);
PSZ LOCAL StrCpy(PSZ pszDst, PSZ pszSrc, ULONG n);
ULONG64 AMLIUtilStringToUlong64(PSZ String, PSZ *End, ULONG Base);
#endif //_AMLIKD_