From e6e1dd5b14aead0656e8d08cc57597359f3aff13 Mon Sep 17 00:00:00 2001 From: Al Stone Date: Aug 04 2015 22:58:20 +0000 Subject: Imported Upstream version 20150717 --- diff --git a/changes.txt b/changes.txt old mode 100755 new mode 100644 index 9abe735..4a4f073 --- a/changes.txt +++ b/changes.txt @@ -1,4 +1,87 @@ ---------------------------------------- +17 July 2015. Summary of changes for version 20150717: + +1) ACPICA kernel-resident subsystem: + +Improved the partitioning between the Debugger and Disassembler +components. This allows the Debugger to be used standalone within kernel +code without the Disassembler (which is used for single stepping also). +This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. + +Debugger: Implemented a new command to trace the execution of control +methods (Trace). This is especially useful for the in-kernel version of +the debugger when file I/O may not be available for method trace output. +See the ACPICA reference for more information. Lv Zheng. + +Moved all C library prototypes (used for the local versions of these +functions when requested) to a new header, acclib.h +Cleaned up the use of non-ANSI C library functions. These functions are +implemented locally in ACPICA. Moved all such functions to a common +source file, utnonansi.c + +Debugger: Fixed a problem with the "!!" command (get last command +executed) where the debugger could enter an infinite loop and eventually +crash. + +Removed the use of local macros that were used for some of the standard C +library functions to automatically cast input parameters. This mostly +affected the is* functions where the input parameter is defined to be an +int. This required a few modifications to the main ACPICA source code to +provide casting for these functions and eliminate possible compiler +warnings for these parameters. + +Across the source code, added additional status/error checking to resolve +issues discovered by static source code analysis tools such as Coverity. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and +has a much larger code and data size. + + Current Release: + Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total + Debug Version: 197.8K Code, 81.5K Data, 279.3K Total + Previous Release: + Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total + Debug Version: 196.2K Code, 81.0K Data, 277.2K Total + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Fixed a regression where the device map file feature no longer +worked properly when used in conjunction with the disassembler. It only +worked properly with the compiler itself. + +iASL: Implemented a new warning for method LocalX variables that are set +but never used (similar to a C compiler such as gcc). This also applies +to ArgX variables that are not defined by the parent method, and are +instead (legally) used as local variables. + +iASL/Preprocessor: Finished the pass-through of line numbers from the +preprocessor to the compiler. This ensures that compiler errors/warnings +have the correct original line numbers and filenames, regardless of any +#include files. + +iASL/Preprocessor: Fixed a couple of issues with comment handling and the +pass-through of comments to the preprocessor output file (which becomes +the compiler input file). Also fixed a problem with // comments that +appear after a math expression. + +iASL: Added support for the TCPA server table to the table compiler and +template generator. (The client table was already previously supported) + +iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to +identify the iASL compiler. + +Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined +multiple times. The new names are ACPI_SIGN_NEGATIVE and +ACPI_SIGN_POSITIVE. + +AcpiHelp: Update to expand help messages for the iASL preprocessor +directives. + + +---------------------------------------- 19 June 2015. Summary of changes for version 20150619: Two regressions in version 20150616 have been addressed: diff --git a/generate/unix/Makefile.rules b/generate/unix/Makefile.rules index 788b56a..b9aa9a9 100644 --- a/generate/unix/Makefile.rules +++ b/generate/unix/Makefile.rules @@ -18,7 +18,7 @@ $(OBJDIR)/%.o : %.c $(HEADERS) $(ACPICA_HEADERS) $(COMPILEOBJ) clean : - rm -f $(PROG) $(PROG).exe $(OBJECTS) $(INTERMEDIATES) $(MISC) + rm -f $(PROG) $(PROG).exe $(OBJECTS) $(OBJDIR)/*.o $(INTERMEDIATES) $(MISC) install : $(INSTALLPROG) diff --git a/generate/unix/acpidump/Makefile b/generate/unix/acpidump/Makefile index 79cfadc..313ad15 100644 --- a/generate/unix/acpidump/Makefile +++ b/generate/unix/acpidump/Makefile @@ -44,6 +44,7 @@ OBJECTS = \ $(OBJDIR)/utexcep.o\ $(OBJDIR)/utglobal.o\ $(OBJDIR)/utmath.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utprint.o\ $(OBJDIR)/utstring.o\ $(OBJDIR)/utxferror.o diff --git a/generate/unix/acpiexamples/Makefile b/generate/unix/acpiexamples/Makefile index b404b54..397c4d4 100644 --- a/generate/unix/acpiexamples/Makefile +++ b/generate/unix/acpiexamples/Makefile @@ -40,6 +40,7 @@ OBJECTS = \ $(OBJDIR)/extables.o\ $(OBJDIR)/dsargs.o\ $(OBJDIR)/dscontrol.o\ + $(OBJDIR)/dsdebug.o\ $(OBJDIR)/dsfield.o\ $(OBJDIR)/dsinit.o\ $(OBJDIR)/dsmethod.o\ @@ -148,6 +149,7 @@ OBJECTS = \ $(OBJDIR)/utobject.o\ $(OBJDIR)/utosi.o\ $(OBJDIR)/utownerid.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utpredef.o\ $(OBJDIR)/utprint.o\ $(OBJDIR)/utresrc.o\ diff --git a/generate/unix/acpiexec/Makefile b/generate/unix/acpiexec/Makefile index 02e868d..6fa25e8 100644 --- a/generate/unix/acpiexec/Makefile +++ b/generate/unix/acpiexec/Makefile @@ -58,6 +58,7 @@ OBJECTS = \ $(OBJDIR)/dbinput.o\ $(OBJDIR)/dbmethod.o\ $(OBJDIR)/dbnames.o\ + $(OBJDIR)/dbobject.o\ $(OBJDIR)/dbstats.o\ $(OBJDIR)/dbtest.o\ $(OBJDIR)/dbutils.o\ @@ -66,7 +67,6 @@ OBJECTS = \ $(OBJDIR)/dmcstyle.o\ $(OBJDIR)/dmdeferred.o\ $(OBJDIR)/dmnames.o\ - $(OBJDIR)/dmobject.o\ $(OBJDIR)/dmopcode.o\ $(OBJDIR)/dmresrc.o\ $(OBJDIR)/dmresrcl.o\ @@ -76,6 +76,7 @@ OBJECTS = \ $(OBJDIR)/dmwalk.o\ $(OBJDIR)/dsargs.o\ $(OBJDIR)/dscontrol.o\ + $(OBJDIR)/dsdebug.o\ $(OBJDIR)/dsfield.o\ $(OBJDIR)/dsinit.o\ $(OBJDIR)/dsmethod.o\ @@ -218,6 +219,7 @@ OBJECTS = \ $(OBJDIR)/utobject.o\ $(OBJDIR)/utosi.o\ $(OBJDIR)/utownerid.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utpredef.o\ $(OBJDIR)/utprint.o\ $(OBJDIR)/utresrc.o\ diff --git a/generate/unix/acpihelp/Makefile b/generate/unix/acpihelp/Makefile index 30a2764..d50e416 100644 --- a/generate/unix/acpihelp/Makefile +++ b/generate/unix/acpihelp/Makefile @@ -45,6 +45,7 @@ OBJECTS = \ $(OBJDIR)/utglobal.o\ $(OBJDIR)/uthex.o\ $(OBJDIR)/utmath.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utpredef.o\ $(OBJDIR)/utprint.o\ $(OBJDIR)/utuuid.o diff --git a/generate/unix/acpisrc/Makefile b/generate/unix/acpisrc/Makefile index 5d40c09..6511fd7 100644 --- a/generate/unix/acpisrc/Makefile +++ b/generate/unix/acpisrc/Makefile @@ -43,7 +43,9 @@ OBJECTS = \ $(OBJDIR)/utexcep.o\ $(OBJDIR)/utglobal.o\ $(OBJDIR)/utmath.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utprint.o\ + $(OBJDIR)/utstring.o\ $(OBJDIR)/utxferror.o # diff --git a/generate/unix/acpixtract/Makefile b/generate/unix/acpixtract/Makefile index 750583e..8bad158 100644 --- a/generate/unix/acpixtract/Makefile +++ b/generate/unix/acpixtract/Makefile @@ -36,6 +36,7 @@ OBJECTS = \ $(OBJDIR)/utexcep.o\ $(OBJDIR)/utglobal.o\ $(OBJDIR)/utmath.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utprint.o\ $(OBJDIR)/utxferror.o diff --git a/generate/unix/iasl/Makefile b/generate/unix/iasl/Makefile index be1117d..57da6eb 100644 --- a/generate/unix/iasl/Makefile +++ b/generate/unix/iasl/Makefile @@ -106,7 +106,6 @@ OBJECTS = \ $(OBJDIR)/dmdeferred.o\ $(OBJDIR)/dmextern.o\ $(OBJDIR)/dmnames.o\ - $(OBJDIR)/dmobject.o\ $(OBJDIR)/dmopcode.o\ $(OBJDIR)/dmresrc.o\ $(OBJDIR)/dmresrcl.o\ @@ -208,6 +207,7 @@ OBJECTS = \ $(OBJDIR)/utmath.o\ $(OBJDIR)/utmisc.o\ $(OBJDIR)/utmutex.o\ + $(OBJDIR)/utnonansi.o\ $(OBJDIR)/utobject.o\ $(OBJDIR)/utownerid.o\ $(OBJDIR)/utpredef.o\ diff --git a/source/common/adisasm.c b/source/common/adisasm.c index 1fe6e06..839bafe 100644 --- a/source/common/adisasm.c +++ b/source/common/adisasm.c @@ -187,6 +187,7 @@ AdInitialize ( AcpiGbl_RootTableList.CurrentTableCount = 0; AcpiGbl_RootTableList.Tables = LocalTables; + AcpiGbl_PreviousOp = NULL; return (Status); } @@ -796,8 +797,8 @@ AdStoreTable ( AcpiTbInitTableDescriptor (TableDesc, ACPI_PTR_TO_PHYSADDR (Table), ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table); - AcpiTbValidateTable (TableDesc); - return (AE_OK); + Status = AcpiTbValidateTable (TableDesc); + return (Status); } @@ -892,7 +893,7 @@ AdParseTable ( /* Create the root object */ - AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (); + AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (AmlStart); if (!AcpiGbl_ParseOpRoot) { return (AE_NO_MEMORY); diff --git a/source/common/dmrestag.c b/source/common/dmrestag.c index c10c364..de81db5 100644 --- a/source/common/dmrestag.c +++ b/source/common/dmrestag.c @@ -650,7 +650,7 @@ AcpiGetTagPathname ( /* Get the full pathname to the parent buffer */ - RequiredSize = AcpiNsGetPathnameLength (BufferNode); + RequiredSize = AcpiNsBuildNormalizedPath (BufferNode, NULL, 0, FALSE); if (!RequiredSize) { return (NULL); @@ -662,12 +662,8 @@ AcpiGetTagPathname ( return (NULL); } - Status = AcpiNsBuildExternalPath (BufferNode, RequiredSize, Pathname); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (Pathname); - return (NULL); - } + (void) AcpiNsBuildNormalizedPath (BufferNode, Pathname, + RequiredSize, FALSE); /* * Create the full path to the resource and tag by: remove the buffer name, diff --git a/source/common/dmtable.c b/source/common/dmtable.c index 91fd6be..9845dde 100644 --- a/source/common/dmtable.c +++ b/source/common/dmtable.c @@ -368,7 +368,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi}, {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat}, {ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao}, - {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, TemplateTcpa}, + {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, NULL, NULL, TemplateTpm2}, {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi}, {ACPI_SIG_VRTC, AcpiDmTableInfoVrtc, AcpiDmDumpVrtc, DtCompileVrtc, TemplateVrtc}, @@ -500,7 +500,11 @@ AcpiDmDumpDataTable ( if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) { Length = Table->Length; - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); + if (ACPI_FAILURE (Status)) + { + return; + } } else if (ACPI_VALIDATE_RSDP_SIG (Table->Signature)) { @@ -561,7 +565,11 @@ AcpiDmDumpDataTable ( { /* Simple table, just walk the info table */ - AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); + Status = AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); + if (ACPI_FAILURE (Status)) + { + return; + } } } @@ -720,6 +728,7 @@ AcpiDmDumpTable ( const AH_TABLE *TableData; const char *Name; BOOLEAN LastOutputBlankLine = FALSE; + ACPI_STATUS Status; char RepairedName[8]; @@ -1114,8 +1123,13 @@ AcpiDmDumpTable ( /* Generic Address Structure */ AcpiOsPrintf (STRING_FORMAT, "Generic Address Structure"); - AcpiDmDumpTable (TableLength, CurrentOffset, Target, + Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, sizeof (ACPI_GENERIC_ADDRESS), AcpiDmTableInfoGas); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; break; @@ -1250,8 +1264,13 @@ AcpiDmDumpTable ( AcpiOsPrintf (STRING_FORMAT, "Hardware Error Notification Structure"); - AcpiDmDumpTable (TableLength, CurrentOffset, Target, + Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; break; @@ -1275,8 +1294,13 @@ AcpiDmDumpTable ( AcpiOsPrintf (STRING_FORMAT, "IORT Memory Access Properties"); - AcpiDmDumpTable (TableLength, CurrentOffset, Target, + Status = AcpiDmDumpTable (TableLength, CurrentOffset, Target, sizeof (ACPI_IORT_MEMORY_ACCESS), AcpiDmTableInfoIortAcc); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + LastOutputBlankLine = TRUE; break; diff --git a/source/common/dmtbdump.c b/source/common/dmtbdump.c index 4711b68..7ec19bc 100644 --- a/source/common/dmtbdump.c +++ b/source/common/dmtbdump.c @@ -208,11 +208,16 @@ AcpiDmDumpRsdp ( ACPI_TABLE_RSDP *Rsdp = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Table); UINT32 Length = sizeof (ACPI_RSDP_COMMON); UINT8 Checksum; + ACPI_STATUS Status; /* Dump the common ACPI 1.0 portion */ - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp1); + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp1); + if (ACPI_FAILURE (Status)) + { + return (Length); + } /* Validate the first checksum */ @@ -229,7 +234,11 @@ AcpiDmDumpRsdp ( if (Rsdp->Revision > 0) { Length = Rsdp->Length; - AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp2); + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp2); + if (ACPI_FAILURE (Status)) + { + return (Length); + } /* Validate the extended checksum over entire RSDP */ @@ -347,37 +356,59 @@ void AcpiDmDumpFadt ( ACPI_TABLE_HEADER *Table) { + ACPI_STATUS Status; + /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); + if (ACPI_FAILURE (Status)) + { + return; + } /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */ if ((Table->Length > ACPI_FADT_V1_SIZE) && (Table->Length <= ACPI_FADT_V2_SIZE)) { - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); + if (ACPI_FAILURE (Status)) + { + return; + } } /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */ else if (Table->Length > ACPI_FADT_V2_SIZE) { - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3); + if (ACPI_FAILURE (Status)) + { + return; + } /* Check for FADT revision 5 fields and up (ACPI 5.0+) */ if (Table->Length > ACPI_FADT_V3_SIZE) { - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5); + if (ACPI_FAILURE (Status)) + { + return; + } } /* Check for FADT revision 6 fields and up (ACPI 6.0+) */ if (Table->Length > ACPI_FADT_V3_SIZE) { - AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6); + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt6); + if (ACPI_FAILURE (Status)) + { + return; + } } } @@ -1136,7 +1167,7 @@ AcpiDmDumpDrtm ( AcpiDmTableInfoDrtm1); if (ACPI_FAILURE (Status)) { - return; + return; } Offset += ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources); @@ -1164,13 +1195,9 @@ AcpiDmDumpDrtm ( DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset); AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, + (void) AcpiDmDumpTable (Table->Length, Offset, DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2); - if (ACPI_FAILURE (Status)) - { - return; - } } @@ -1794,6 +1821,10 @@ AcpiDmDumpIort ( Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), Length, AcpiDmTableInfoIort3a); + if (ACPI_FAILURE (Status)) + { + return; + } NodeOffset = IortSmmu->ContextInterruptOffset; for (i = 0; i < IortSmmu->ContextInterruptCount; i++) @@ -1801,6 +1832,10 @@ AcpiDmDumpIort ( Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), 8, AcpiDmTableInfoIort3b); + if (ACPI_FAILURE (Status)) + { + return; + } NodeOffset += 8; } @@ -1810,6 +1845,10 @@ AcpiDmDumpIort ( Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), 8, AcpiDmTableInfoIort3c); + if (ACPI_FAILURE (Status)) + { + return; + } NodeOffset += 8; } } @@ -1830,6 +1869,10 @@ AcpiDmDumpIort ( Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), Length, AcpiDmTableInfoIortMap); + if (ACPI_FAILURE (Status)) + { + return; + } NodeOffset += Length; } @@ -2004,6 +2047,10 @@ AcpiDmDumpIvrs ( Status = AcpiDmDumpTable (Table->Length, EntryOffset, DeviceEntry, EntryLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; + } EntryOffset += EntryLength; DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry, @@ -2687,6 +2734,11 @@ AcpiDmDumpNfit ( Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, &Interleave->LineOffset[i], sizeof (UINT32), AcpiDmTableInfoNfit2a); + if (ACPI_FAILURE (Status)) + { + return; + } + FieldOffset += sizeof (UINT32); } break; @@ -2715,6 +2767,11 @@ AcpiDmDumpNfit ( Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, &Hint->HintAddress[i], sizeof (UINT64), AcpiDmTableInfoNfit6a); + if (ACPI_FAILURE (Status)) + { + return; + } + FieldOffset += sizeof (UINT64); } break; @@ -3126,7 +3183,7 @@ void AcpiDmDumpSlic ( ACPI_TABLE_HEADER *Table) { - AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, + (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); } @@ -3358,6 +3415,77 @@ AcpiDmDumpStao ( /******************************************************************************* * + * FUNCTION: AcpiDmDumpTcpa + * + * PARAMETERS: Table - A TCPA table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a TCPA. + * + * NOTE: There are two versions of the table with the same signature: + * the client version and the server version. The common + * PlatformClass field is used to differentiate the two types of + * tables. + * + ******************************************************************************/ + +void +AcpiDmDumpTcpa ( + ACPI_TABLE_HEADER *Table) +{ + UINT32 Offset = sizeof (ACPI_TABLE_TCPA_HDR); + ACPI_TABLE_TCPA_HDR *CommonHeader = ACPI_CAST_PTR ( + ACPI_TABLE_TCPA_HDR, Table); + ACPI_TABLE_TCPA_HDR *SubTable = ACPI_ADD_PTR ( + ACPI_TABLE_TCPA_HDR, Table, Offset); + ACPI_STATUS Status; + + + /* Main table */ + + Status = AcpiDmDumpTable (Table->Length, 0, Table, + 0, AcpiDmTableInfoTcpaHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* + * Examine the PlatformClass field to determine the table type. + * Either a client or server table. Only one. + */ + switch (CommonHeader->PlatformClass) + { + case ACPI_TCPA_CLIENT_TABLE: + + Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, + Table->Length - Offset, AcpiDmTableInfoTcpaClient); + break; + + case ACPI_TCPA_SERVER_TABLE: + + Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, + Table->Length - Offset, AcpiDmTableInfoTcpaServer); + break; + + default: + + AcpiOsPrintf ("\n**** Unknown TCPA Platform Class 0x%X\n", + CommonHeader->PlatformClass); + Status = AE_ERROR; + break; + } + + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("\n**** Cannot disassemble TCPA table\n"); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpVrtc * * PARAMETERS: Table - A VRTC table @@ -3497,10 +3625,6 @@ AcpiDmDumpWpbt ( /* Dump the arguments buffer */ - AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength, + (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength, AcpiDmTableInfoWpbt0); - if (ACPI_FAILURE (Status)) - { - return; - } } diff --git a/source/common/dmtbinfo.c b/source/common/dmtbinfo.c index 50a1ee0..3a02566 100644 --- a/source/common/dmtbinfo.c +++ b/source/common/dmtbinfo.c @@ -113,7 +113,7 @@ #define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f) #define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f) #define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f) -#define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f) +#define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_HDR,f) #define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f) #define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f) #define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f) @@ -230,6 +230,8 @@ #define ACPI_SRAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f) #define ACPI_SRAT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f) #define ACPI_SRAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f) +#define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f) +#define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f) #define ACPI_VRTC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VRTC_ENTRY,f) #define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f) @@ -2613,16 +2615,53 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[] = * * TCPA - Trusted Computing Platform Alliance table (Client) * + * NOTE: There are two versions of the table with the same signature -- + * the client version and the server version. The common PlatformClass + * field is used to differentiate the two types of tables. + * ******************************************************************************/ -ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[] = +ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[] = +{ + {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (PlatformClass), "Platform Class", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[] = { - {ACPI_DMT_UINT16, ACPI_TCPA_CLIENT_OFFSET (PlatformClass), "Platform Class", 0}, {ACPI_DMT_UINT32, ACPI_TCPA_CLIENT_OFFSET (MinimumLogLength), "Min Event Log Length", 0}, {ACPI_DMT_UINT64, ACPI_TCPA_CLIENT_OFFSET (LogAddress), "Event Log Address", 0}, ACPI_DMT_TERMINATOR }; +ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[] = +{ + {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (MinimumLogLength), "Min Event Log Length", 0}, + {ACPI_DMT_UINT64, ACPI_TCPA_SERVER_OFFSET (LogAddress), "Event Log Address", 0}, + {ACPI_DMT_UINT16, ACPI_TCPA_SERVER_OFFSET (SpecRevision), "Specification Revision", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Device Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Pci Device", 0}, + {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Bus is Pnp", 0}, + {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (DeviceFlags), "Address Valid", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Interrupt Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Mode", 0}, + {ACPI_DMT_FLAG1, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Polarity", 0}, + {ACPI_DMT_FLAG2, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "GPE SCI Triggered", 0}, + {ACPI_DMT_FLAG3, ACPI_TCPA_SERVER_OFFSET (InterruptFlags), "Global System Interrupt", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (GpeNumber), "Gpe Number", 0}, + {ACPI_DMT_UINT24, ACPI_TCPA_SERVER_OFFSET (Reserved2[0]), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (GlobalInterrupt), "Global Interrupt", 0}, + {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT32, ACPI_TCPA_SERVER_OFFSET (Reserved3), "Reserved", 0}, + {ACPI_DMT_GAS, ACPI_TCPA_SERVER_OFFSET (ConfigAddress), "Configuration Address", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Group), "Pci Group", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Bus), "Pci Bus", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Device), "Pci Device", 0}, + {ACPI_DMT_UINT8, ACPI_TCPA_SERVER_OFFSET (Function), "Pci Function", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * diff --git a/source/compiler/aslascii.c b/source/compiler/aslascii.c index 7ff1c4a..f164e98 100644 --- a/source/compiler/aslascii.c +++ b/source/compiler/aslascii.c @@ -177,6 +177,11 @@ FlCheckForAscii ( /* Open file in text mode so file offset is always accurate */ Handle = fopen (Filename, "rb"); + if (!Handle) + { + perror ("Could not open input file"); + return (AE_ERROR); + } Status.Line = 1; Status.Offset = 0; diff --git a/source/compiler/aslcompile.c b/source/compiler/aslcompile.c index afc004d..9e5b53a 100644 --- a/source/compiler/aslcompile.c +++ b/source/compiler/aslcompile.c @@ -100,6 +100,10 @@ CmDoCompile ( Event = UtBeginEvent ("Preprocess input file"); if (Gbl_PreprocessFlag) { + /* Enter compiler name as a #define */ + + PrAddDefine (ASL_DEFINE, "", FALSE); + /* Preprocessor */ PrDoPreprocess (); diff --git a/source/compiler/asldefine.h b/source/compiler/asldefine.h index 0b5f614..9e42ddf 100644 --- a/source/compiler/asldefine.h +++ b/source/compiler/asldefine.h @@ -52,6 +52,7 @@ #define AML_DISASSEMBLER_NAME "AML/ASL+ Disassembler" #define ASL_INVOCATION_NAME "iasl" #define ASL_CREATOR_ID "INTL" +#define ASL_DEFINE "__IASL__" #define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.0" @@ -155,12 +156,6 @@ #define ACPI_COMPILER_RESERVED_NAME (ACPI_UINT32_MAX - 3) -/* String to Integer conversion */ - -#define NEGATIVE 1 -#define POSITIVE 0 - - /* Helper macros for resource tag creation */ #define RsCreateMultiBitField \ diff --git a/source/compiler/aslfiles.c b/source/compiler/aslfiles.c index 2ad62ec..1b738cc 100644 --- a/source/compiler/aslfiles.c +++ b/source/compiler/aslfiles.c @@ -546,6 +546,26 @@ FlOpenMiscOutputFiles ( char *Filename; + /* Create/Open a map file if requested */ + + if (Gbl_MapfileFlag) + { + Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_MAP); + if (!Filename) + { + AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, + 0, 0, 0, 0, NULL, NULL); + return (AE_ERROR); + } + + /* Open the hex file, text mode (closed at compiler exit) */ + + FlOpenFile (ASL_FILE_MAP_OUTPUT, Filename, "w+t"); + + AslCompilerSignon (ASL_FILE_MAP_OUTPUT); + AslCompilerFileHeader (ASL_FILE_MAP_OUTPUT); + } + /* All done for disassembler */ if (Gbl_FileType == ASL_INPUT_TYPE_ACPI_TABLE) @@ -812,26 +832,6 @@ FlOpenMiscOutputFiles ( AslCompilerFileHeader (ASL_FILE_NAMESPACE_OUTPUT); } - /* Create/Open a map file if requested */ - - if (Gbl_MapfileFlag) - { - Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_MAP); - if (!Filename) - { - AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, - 0, 0, 0, 0, NULL, NULL); - return (AE_ERROR); - } - - /* Open the hex file, text mode (closed at compiler exit) */ - - FlOpenFile (ASL_FILE_MAP_OUTPUT, Filename, "w+t"); - - AslCompilerSignon (ASL_FILE_MAP_OUTPUT); - AslCompilerFileHeader (ASL_FILE_MAP_OUTPUT); - } - return (AE_OK); } diff --git a/source/compiler/asllookup.c b/source/compiler/asllookup.c index 6114822..49b4901 100644 --- a/source/compiler/asllookup.c +++ b/source/compiler/asllookup.c @@ -119,8 +119,73 @@ LkIsObjectUsed ( { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); ACPI_NAMESPACE_NODE *Next; + ASL_METHOD_LOCAL *MethodLocals; + ASL_METHOD_LOCAL *MethodArgs; + UINT32 i; + if (Node->Type == ACPI_TYPE_METHOD) + { + if (!Node->Op || !Node->MethodLocals) + { + return (AE_OK); + } + + MethodLocals = (ASL_METHOD_LOCAL *) Node->MethodLocals; + MethodArgs = (ASL_METHOD_LOCAL *) Node->MethodArgs; + + /* + * Analysis of LocalX variables + */ + for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) + { + /* Warn for Locals that are set but never referenced */ + + if ((MethodLocals[i].Flags & ASL_LOCAL_INITIALIZED) && + (!(MethodLocals[i].Flags & ASL_LOCAL_REFERENCED))) + { + sprintf (MsgBuffer, "Local%u", i); + AslError (ASL_WARNING, ASL_MSG_LOCAL_NOT_USED, + MethodLocals[i].Op, MsgBuffer); + } + } + + /* + * Analysis of ArgX variables (standard method arguments, + * and remaining unused ArgX can also be used as locals) + */ + for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) + { + if (MethodArgs[i].Flags & ASL_ARG_IS_LOCAL) + { + /* Warn if ArgX is being used as a local, but not referenced */ + + if ((MethodArgs[i].Flags & ASL_ARG_INITIALIZED) && + (!(MethodArgs[i].Flags & ASL_ARG_REFERENCED))) + { + sprintf (MsgBuffer, "Arg%u", i); + AslError (ASL_WARNING, ASL_MSG_ARG_AS_LOCAL_NOT_USED, + MethodArgs[i].Op, MsgBuffer); + } + } + else + { + /* + * Remark if a normal method ArgX is not referenced. + * We ignore the predefined methods since often, not + * all arguments are needed or used. + */ + if ((Node->Name.Ascii[0] != '_') && + (!(MethodArgs[i].Flags & ASL_ARG_REFERENCED))) + { + sprintf (MsgBuffer, "Arg%u", i); + AslError (ASL_REMARK, ASL_MSG_ARG_NOT_USED, + MethodArgs[i].Op, MsgBuffer); + } + } + } + } + /* Referenced flag is set during the namespace xref */ if (Node->Flags & ANOBJ_IS_REFERENCED) diff --git a/source/compiler/aslmessages.c b/source/compiler/aslmessages.c index 520ebe0..bd69311 100644 --- a/source/compiler/aslmessages.c +++ b/source/compiler/aslmessages.c @@ -235,7 +235,11 @@ const char *AslCompilerMsgs [] = /* ASL_MSG_BUFFER_ALLOCATION */ "Could not allocate line buffer", /* ASL_MSG_MISSING_DEPENDENCY */ "Missing dependency", /* ASL_MSG_ILLEGAL_FORWARD_REF */ "Illegal forward reference within a method", -/* ASL_MSG_ILLEGAL_METHOD_REF */ "Illegal reference across two methods" +/* ASL_MSG_ILLEGAL_METHOD_REF */ "Illegal reference across two methods", +/* ASL_MSG_LOCAL_NOT_USED */ "Method Local is set but never used", +/* ASL_MSG_ARG_AS_LOCAL_NOT_USED */ "Method Argument (as a local) is set but never used", +/* ASL_MSG_ARG_NOT_USED */ "Method Argument is never used" + }; /* Table compiler */ diff --git a/source/compiler/aslmessages.h b/source/compiler/aslmessages.h index 9837d54..d7e3dd0 100644 --- a/source/compiler/aslmessages.h +++ b/source/compiler/aslmessages.h @@ -238,6 +238,9 @@ typedef enum ASL_MSG_MISSING_DEPENDENCY, ASL_MSG_ILLEGAL_FORWARD_REF, ASL_MSG_ILLEGAL_METHOD_REF, + ASL_MSG_LOCAL_NOT_USED, + ASL_MSG_ARG_AS_LOCAL_NOT_USED, + ASL_MSG_ARG_NOT_USED, /* These messages are used by the Data Table compiler only */ diff --git a/source/compiler/aslmethod.c b/source/compiler/aslmethod.c index 6d53cec..40ed971 100644 --- a/source/compiler/aslmethod.c +++ b/source/compiler/aslmethod.c @@ -255,7 +255,7 @@ MtMethodAnalysisWalkBegin ( return (AE_ERROR); } - RegisterNumber = (Op->Asl.AmlOpcode & 0x000F); + RegisterNumber = (Op->Asl.AmlOpcode & 0x0007); /* * If the local is being used as a target, mark the local diff --git a/source/compiler/aslnamesp.c b/source/compiler/aslnamesp.c index c35ebfd..e2dea6f 100644 --- a/source/compiler/aslnamesp.c +++ b/source/compiler/aslnamesp.c @@ -409,7 +409,7 @@ NsDoOnePathname ( TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (Node, &TargetPath); + Status = AcpiNsHandleToPathname (Node, &TargetPath, FALSE); if (ACPI_FAILURE (Status)) { return (Status); diff --git a/source/compiler/asloffset.c b/source/compiler/asloffset.c index baf436e..b1e6f5a 100644 --- a/source/compiler/asloffset.c +++ b/source/compiler/asloffset.c @@ -363,7 +363,7 @@ LsEmitOffsetTableEntry ( /* Get the full pathname to the namespace node */ TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (Node, &TargetPath); + Status = AcpiNsHandleToPathname (Node, &TargetPath, FALSE); if (ACPI_FAILURE (Status)) { return; diff --git a/source/compiler/aslopcodes.c b/source/compiler/aslopcodes.c index fa3d1fc..a7f14de 100644 --- a/source/compiler/aslopcodes.c +++ b/source/compiler/aslopcodes.c @@ -791,43 +791,6 @@ OpcEncodePldBuffer ( /******************************************************************************* * - * FUNCTION: OpcStrupr (strupr) - * - * PARAMETERS: SrcString - The source string to convert - * - * RETURN: None - * - * DESCRIPTION: Convert string to uppercase - * - * NOTE: This is not a POSIX function, so it appears here, not in utclib.c - * - ******************************************************************************/ - -static void -OpcStrupr ( - char *SrcString) -{ - char *String; - - - if (!SrcString) - { - return; - } - - /* Walk entire string, uppercasing the letters */ - - for (String = SrcString; *String; String++) - { - *String = (char) toupper ((int) *String); - } - - return; -} - - -/******************************************************************************* - * * FUNCTION: OpcFindName * * PARAMETERS: List - Array of char strings to be searched @@ -851,7 +814,7 @@ OpcFindName ( UINT32 i; - OpcStrupr (Name); + AcpiUtStrupr (Name); for (i = 0, Str = List[0]; Str; i++, Str = List[i]) { @@ -900,13 +863,6 @@ OpcDoPld ( return; } - Buffer = UtLocalCalloc (ACPI_PLD_BUFFER_SIZE); - if (!Buffer) - { - AslError(ASL_ERROR, ASL_MSG_BUFFER_ALLOCATION, Op, NULL); - return; - } - memset (&PldInfo, 0, sizeof (ACPI_PLD_INFO)); Node = Op->Asl.Child; diff --git a/source/compiler/aslopt.c b/source/compiler/aslopt.c index 7770f3e..e41e22f 100644 --- a/source/compiler/aslopt.c +++ b/source/compiler/aslopt.c @@ -655,7 +655,7 @@ OptOptimizeNamePath ( * format -- something we can easily manipulate */ TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (TargetNode, &TargetPath); + Status = AcpiNsHandleToPathname (TargetNode, &TargetPath, FALSE); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Getting Target NamePath", @@ -667,7 +667,7 @@ OptOptimizeNamePath ( /* CurrentPath is the path to this scope (where we are in the namespace) */ CurrentPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (CurrentNode, &CurrentPath); + Status = AcpiNsHandleToPathname (CurrentNode, &CurrentPath, FALSE); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Getting Current NamePath", diff --git a/source/compiler/asloptions.c b/source/compiler/asloptions.c index 57bb12b..69c8325 100644 --- a/source/compiler/asloptions.c +++ b/source/compiler/asloptions.c @@ -286,6 +286,11 @@ AslDoOptions ( AcpiGbl_CstyleDisassembly = FALSE; break; + case 'v': + + AcpiGbl_DbOpt_Verbose = TRUE; + break; + default: printf ("Unknown option: -d%s\n", AcpiGbl_Optarg); diff --git a/source/compiler/aslstartup.c b/source/compiler/aslstartup.c index 1ec9a35..0e05da4 100644 --- a/source/compiler/aslstartup.c +++ b/source/compiler/aslstartup.c @@ -246,6 +246,11 @@ AslDoDisassembly ( return (Status); } + /* Handle additional output files for disassembler */ + + Gbl_FileType = ASL_INPUT_TYPE_ACPI_TABLE; + Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix); + /* This is where the disassembly happens */ AcpiGbl_DbOpt_Disasm = TRUE; @@ -261,13 +266,6 @@ AslDoDisassembly ( AcpiDmUnresolvedWarning (0); -#if 0 - /* TBD: Handle additional output files for disassembler */ - - Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix); - NsDisplayNamespace (); -#endif - /* Shutdown compiler and ACPICA subsystem */ AeClearErrorLog (); diff --git a/source/compiler/aslstubs.c b/source/compiler/aslstubs.c index d624fc4..26f607f 100644 --- a/source/compiler/aslstubs.c +++ b/source/compiler/aslstubs.c @@ -165,15 +165,6 @@ AcpiEvInitializeRegion ( return (AE_OK); } -void -AcpiExDoDebugObject ( - ACPI_OPERAND_OBJECT *SourceDesc, - UINT32 Level, - UINT32 Index) -{ - return; -} - ACPI_STATUS AcpiExReadDataFromField ( ACPI_WALK_STATE *WalkState, @@ -216,6 +207,60 @@ AcpiExLoadOp ( return (AE_SUPPORT); } +void +AcpiExDoDebugObject ( + ACPI_OPERAND_OBJECT *SourceDesc, + UINT32 Level, + UINT32 Index) +{ + return; +} + +void +AcpiExStartTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +void +AcpiExStopTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +void +AcpiExStartTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +void +AcpiExStopTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) + +{ + return; +} + +void +AcpiExTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname) +{ + return; +} + ACPI_STATUS AcpiTbFindTable ( char *Signature, diff --git a/source/compiler/asltypes.h b/source/compiler/asltypes.h index 343c364..ce2f758 100644 --- a/source/compiler/asltypes.h +++ b/source/compiler/asltypes.h @@ -302,5 +302,19 @@ typedef struct acpi_serial_info } ACPI_SERIAL_INFO; +typedef struct asl_method_local +{ + ACPI_PARSE_OBJECT *Op; + UINT8 Flags; + +} ASL_METHOD_LOCAL; + +/* Values for Flags field above */ + +#define ASL_LOCAL_INITIALIZED (1) +#define ASL_LOCAL_REFERENCED (1<<1) +#define ASL_ARG_IS_LOCAL (1<<2) +#define ASL_ARG_INITIALIZED (1<<3) +#define ASL_ARG_REFERENCED (1<<4) #endif /* __ASLTYPES_H */ diff --git a/source/compiler/aslutils.c b/source/compiler/aslutils.c index 8b77c8e..9ea4c19 100644 --- a/source/compiler/aslutils.c +++ b/source/compiler/aslutils.c @@ -1008,17 +1008,17 @@ stroul64 ( */ if (*String == '-') { - Sign = NEGATIVE; + Sign = ACPI_SIGN_NEGATIVE; ++String; } else if (*String == '+') { ++String; - Sign = POSITIVE; + Sign = ACPI_SIGN_POSITIVE; } else { - Sign = POSITIVE; + Sign = ACPI_SIGN_POSITIVE; } /* @@ -1106,7 +1106,7 @@ stroul64 ( /* If a minus sign was present, then "the conversion is negated": */ - if (Sign == NEGATIVE) + if (Sign == ACPI_SIGN_NEGATIVE) { ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; } diff --git a/source/compiler/aslxref.c b/source/compiler/aslxref.c index 8ffe5ad..6b65bb1 100644 --- a/source/compiler/aslxref.c +++ b/source/compiler/aslxref.c @@ -66,6 +66,10 @@ XfNamespaceLocateEnd ( UINT32 Level, void *Context); +static ACPI_PARSE_OBJECT * +XfGetParentMethod ( + ACPI_PARSE_OBJECT *Op); + static BOOLEAN XfObjectExists ( char *Name); @@ -280,59 +284,16 @@ XfCheckFieldRange ( } -#ifdef __UNDER_DEVELOPMENT -/******************************************************************************* - * - * FUNCTION: XfIsObjectParental - * - * PARAMETERS: ChildOp - Op to be checked - * PossibleParentOp - Determine if this op is in the family - * - * RETURN: TRUE if ChildOp is a descendent of PossibleParentOp - * - * DESCRIPTION: Determine if an Op is a descendent of another Op. Used to - * detect if a method is declared within another method. - * - ******************************************************************************/ - -static BOOLEAN -XfIsObjectParental ( - ACPI_PARSE_OBJECT *ChildOp, - ACPI_PARSE_OBJECT *PossibleParentOp) -{ - ACPI_PARSE_OBJECT *ParentOp; - - - /* Search upwards through the tree for possible parent */ - - ParentOp = ChildOp; - while (ParentOp) - { - if (ParentOp == PossibleParentOp) - { - return (TRUE); - } - - ParentOp = ParentOp->Asl.Parent; - } - - return (FALSE); -} - - /******************************************************************************* * * FUNCTION: XfGetParentMethod * - * PARAMETERS: Op - Op to be checked - * - * RETURN: Op for parent method. NULL if object is not within a method. + * PARAMETERS: Op - Parse Op to be checked * - * DESCRIPTION: Determine if an object is within a control method. Used to - * implement special rules for named references from within a - * control method. + * RETURN: Control method Op if found. NULL otherwise * - * NOTE: It would be better to have the parser set a flag in the Op if possible. + * DESCRIPTION: Find the control method parent of a parse op. Returns NULL if + * the input Op is not within a control method. * ******************************************************************************/ @@ -340,120 +301,22 @@ static ACPI_PARSE_OBJECT * XfGetParentMethod ( ACPI_PARSE_OBJECT *Op) { - ACPI_PARSE_OBJECT *ParentOp; - - - if (!Op) - { - return (NULL); - } - - if (Op->Asl.ParseOpcode == PARSEOP_METHOD) - { - return (NULL); - } - - /* Walk upwards through the parse tree, up to the root if necessary */ - - ParentOp = Op; - while (ParentOp) - { - if (ParentOp->Asl.ParseOpcode == PARSEOP_METHOD) - { - return (ParentOp); - } - - ParentOp = ParentOp->Asl.Parent; - } - - /* Object is not within a method */ - - return (NULL); -} - - -/******************************************************************************* - * - * FUNCTION: XfCheckIllegalReference - * - * PARAMETERS: Op - Op referring to the target - * TargetNode - Target of the reference - * - * RETURN: None. Emits error message for an illegal reference - * - * DESCRIPTION: Determine if a named reference is legal. A "named" reference - * is something like: Store(ABCD, ...), where ABCD is an AML - * Nameseg or Namepath. - * - * NOTE: Caller must ensure that the name Op is in fact a reference, and not - * an actual name declaration (creation of a named object). - * - ******************************************************************************/ - -static void -XfCheckIllegalReference ( - ACPI_PARSE_OBJECT *Op, - ACPI_NAMESPACE_NODE *TargetNode) -{ - ACPI_PARSE_OBJECT *MethodOp1; - ACPI_PARSE_OBJECT *MethodOp2; - ACPI_PARSE_OBJECT *TargetOp; - - - /* - * Check for an illegal reference to a named object: - * - * 1) References from one control method to another, non-parent - * method are not allowed, they will fail at runtime. - * - * 2) Forward references within a control method are not allowed. - * AML interpreters use a one-pass parse of control methods - * so these forward references will fail at runtime. - */ - TargetOp = TargetNode->Op; - - MethodOp1 = XfGetParentMethod (Op); - MethodOp2 = XfGetParentMethod (TargetOp); - - /* Are both objects within control method(s)? */ - - if (!MethodOp1 || !MethodOp2) - { - return; - } + ACPI_PARSE_OBJECT *NextOp; - /* Objects not in the same method? */ - if (MethodOp1 != MethodOp2) + NextOp = Op->Asl.Parent; + while (NextOp) { - /* - * 1) Cross-method named reference - * - * This is OK if and only if the target reference is within in a - * method that is a parent of current method - */ - if (!XfIsObjectParental (MethodOp1, MethodOp2)) + if (NextOp->Asl.AmlOpcode == AML_METHOD_OP) { - AslError (ASL_ERROR, ASL_MSG_ILLEGAL_METHOD_REF, Op, - Op->Asl.ExternalName); + return (NextOp); } - } - /* - * 2) Both reference and target are in the same method. Check if this is - * an (illegal) forward reference by examining the exact source code - * location of each (the referenced object and the object declaration). - * This is a bit nasty, yet effective. - */ - else if (Op->Asl.LogicalByteOffset < TargetOp->Asl.LogicalByteOffset) - { - AslError (ASL_ERROR, ASL_MSG_ILLEGAL_FORWARD_REF, Op, - Op->Asl.ExternalName); + NextOp = NextOp->Asl.Parent; } + return (NULL); /* No parent method found */ } -#endif - /******************************************************************************* * @@ -496,10 +359,67 @@ XfNamespaceLocateBegin ( UINT8 Message = 0; const ACPI_OPCODE_INFO *OpInfo; UINT32 Flags; + ASL_METHOD_LOCAL *MethodLocals = NULL; + ASL_METHOD_LOCAL *MethodArgs = NULL; + int RegisterNumber; + UINT32 i; ACPI_FUNCTION_TRACE_PTR (XfNamespaceLocateBegin, Op); + + if ((Op->Asl.AmlOpcode == AML_METHOD_OP) && Op->Asl.Node) + { + Node = Op->Asl.Node; + + /* Support for method LocalX/ArgX analysis */ + + if (!Node->MethodLocals) + { + /* Create local/arg info blocks */ + + MethodLocals = UtLocalCalloc ( + sizeof (ASL_METHOD_LOCAL) * ACPI_METHOD_NUM_LOCALS); + Node->MethodLocals = MethodLocals; + + MethodArgs = UtLocalCalloc ( + sizeof (ASL_METHOD_LOCAL) * ACPI_METHOD_NUM_ARGS); + Node->MethodArgs = MethodArgs; + + /* + * Get the method argument count + * First, get the name node + */ + NextOp = Op->Asl.Child; + + /* Get the NumArguments node */ + + NextOp = NextOp->Asl.Next; + Node->ArgCount = (UINT8) + (((UINT8) NextOp->Asl.Value.Integer) & 0x07); + + /* We will track all posible ArgXs */ + + for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) + { + if (i < Node->ArgCount) + { + /* Real Args are always "initialized" */ + + MethodArgs[i].Flags = ASL_ARG_INITIALIZED; + } + else + { + /* Other ArgXs can be used as locals */ + + MethodArgs[i].Flags = ASL_ARG_IS_LOCAL; + } + + MethodArgs[i].Op = Op; + } + } + } + /* * If this node is the actual declaration of a name * [such as the XXXX name in "Method (XXXX)"], @@ -512,10 +432,88 @@ XfNamespaceLocateBegin ( return_ACPI_STATUS (AE_OK); } - /* We are only interested in opcodes that have an associated name */ - OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); + /* Check method LocalX variables */ + + if (OpInfo->Type == AML_TYPE_LOCAL_VARIABLE) + { + /* Find parent method Op */ + + NextOp = XfGetParentMethod (Op); + if (!NextOp) + { + return_ACPI_STATUS (AE_OK); + } + + /* Get method node */ + + Node = NextOp->Asl.Node; + + RegisterNumber = Op->Asl.AmlOpcode & 0x0007; /* 0x60 through 0x67 */ + MethodLocals = Node->MethodLocals; + + if (Op->Asl.CompileFlags & NODE_IS_TARGET) + { + /* Local is being initialized */ + + MethodLocals[RegisterNumber].Flags |= ASL_LOCAL_INITIALIZED; + MethodLocals[RegisterNumber].Op = Op; + + return_ACPI_STATUS (AE_OK); + } + + /* Mark this Local as referenced */ + + MethodLocals[RegisterNumber].Flags |= ASL_LOCAL_REFERENCED; + MethodLocals[RegisterNumber].Op = Op; + + return_ACPI_STATUS (AE_OK); + } + + /* Check method ArgX variables */ + + if (OpInfo->Type == AML_TYPE_METHOD_ARGUMENT) + { + /* Find parent method Op */ + + NextOp = XfGetParentMethod (Op); + if (!NextOp) + { + return_ACPI_STATUS (AE_OK); + } + + /* Get method node */ + + Node = NextOp->Asl.Node; + + /* Get Arg # */ + + RegisterNumber = Op->Asl.AmlOpcode - AML_ARG0; /* 0x68 through 0x6F */ + MethodArgs = Node->MethodArgs; + + if (Op->Asl.CompileFlags & NODE_IS_TARGET) + { + /* Arg is being initialized */ + + MethodArgs[RegisterNumber].Flags |= ASL_ARG_INITIALIZED; + MethodArgs[RegisterNumber].Op = Op; + + return_ACPI_STATUS (AE_OK); + } + + /* Mark this Arg as referenced */ + + MethodArgs[RegisterNumber].Flags |= ASL_ARG_REFERENCED; + MethodArgs[RegisterNumber].Op = Op; + + return_ACPI_STATUS (AE_OK); + } + + /* + * After method ArgX and LocalX, we are only interested in opcodes + * that have an associated name + */ if ((!(OpInfo->Flags & AML_NAMED)) && (!(OpInfo->Flags & AML_CREATE)) && (Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) && @@ -1094,3 +1092,178 @@ XfNamespaceLocateEnd ( return_ACPI_STATUS (AE_OK); } + + +#ifdef __UNDER_DEVELOPMENT +/******************************************************************************* + * + * FUNCTION: XfIsObjectParental + * + * PARAMETERS: ChildOp - Op to be checked + * PossibleParentOp - Determine if this op is in the family + * + * RETURN: TRUE if ChildOp is a descendent of PossibleParentOp + * + * DESCRIPTION: Determine if an Op is a descendent of another Op. Used to + * detect if a method is declared within another method. + * + ******************************************************************************/ + +static BOOLEAN +XfIsObjectParental ( + ACPI_PARSE_OBJECT *ChildOp, + ACPI_PARSE_OBJECT *PossibleParentOp) +{ + ACPI_PARSE_OBJECT *ParentOp; + + + /* Search upwards through the tree for possible parent */ + + ParentOp = ChildOp; + while (ParentOp) + { + if (ParentOp == PossibleParentOp) + { + return (TRUE); + } + + ParentOp = ParentOp->Asl.Parent; + } + + return (FALSE); +} + + +/******************************************************************************* + * + * FUNCTION: XfGetParentMethod + * + * PARAMETERS: Op - Op to be checked + * + * RETURN: Op for parent method. NULL if object is not within a method. + * + * DESCRIPTION: Determine if an object is within a control method. Used to + * implement special rules for named references from within a + * control method. + * + * NOTE: It would be better to have the parser set a flag in the Op if possible. + * + ******************************************************************************/ + +static ACPI_PARSE_OBJECT * +XfGetParentMethod ( + ACPI_PARSE_OBJECT *Op) +{ + ACPI_PARSE_OBJECT *ParentOp; + + + if (!Op) + { + return (NULL); + } + + if (Op->Asl.ParseOpcode == PARSEOP_METHOD) + { + return (NULL); + } + + /* Walk upwards through the parse tree, up to the root if necessary */ + + ParentOp = Op; + while (ParentOp) + { + if (ParentOp->Asl.ParseOpcode == PARSEOP_METHOD) + { + return (ParentOp); + } + + ParentOp = ParentOp->Asl.Parent; + } + + /* Object is not within a method */ + + return (NULL); +} + + +/******************************************************************************* + * + * FUNCTION: XfCheckIllegalReference + * + * PARAMETERS: Op - Op referring to the target + * TargetNode - Target of the reference + * + * RETURN: None. Emits error message for an illegal reference + * + * DESCRIPTION: Determine if a named reference is legal. A "named" reference + * is something like: Store(ABCD, ...), where ABCD is an AML + * Nameseg or Namepath. + * + * NOTE: Caller must ensure that the name Op is in fact a reference, and not + * an actual name declaration (creation of a named object). + * + ******************************************************************************/ + +static void +XfCheckIllegalReference ( + ACPI_PARSE_OBJECT *Op, + ACPI_NAMESPACE_NODE *TargetNode) +{ + ACPI_PARSE_OBJECT *MethodOp1; + ACPI_PARSE_OBJECT *MethodOp2; + ACPI_PARSE_OBJECT *TargetOp; + + + /* + * Check for an illegal reference to a named object: + * + * 1) References from one control method to another, non-parent + * method are not allowed, they will fail at runtime. + * + * 2) Forward references within a control method are not allowed. + * AML interpreters use a one-pass parse of control methods + * so these forward references will fail at runtime. + */ + TargetOp = TargetNode->Op; + + MethodOp1 = XfGetParentMethod (Op); + MethodOp2 = XfGetParentMethod (TargetOp); + + /* Are both objects within control method(s)? */ + + if (!MethodOp1 || !MethodOp2) + { + return; + } + + /* Objects not in the same method? */ + + if (MethodOp1 != MethodOp2) + { + /* + * 1) Cross-method named reference + * + * This is OK if and only if the target reference is within in a + * method that is a parent of current method + */ + if (!XfIsObjectParental (MethodOp1, MethodOp2)) + { + AslError (ASL_ERROR, ASL_MSG_ILLEGAL_METHOD_REF, Op, + Op->Asl.ExternalName); + } + } + + /* + * 2) Both reference and target are in the same method. Check if this is + * an (illegal) forward reference by examining the exact source code + * location of each (the referenced object and the object declaration). + * This is a bit nasty, yet effective. + */ + else if (Op->Asl.LogicalByteOffset < TargetOp->Asl.LogicalByteOffset) + { + AslError (ASL_ERROR, ASL_MSG_ILLEGAL_FORWARD_REF, Op, + Op->Asl.ExternalName); + } + +} +#endif diff --git a/source/compiler/dtcompiler.h b/source/compiler/dtcompiler.h index 44fc56d..55d7c12 100644 --- a/source/compiler/dtcompiler.h +++ b/source/compiler/dtcompiler.h @@ -537,6 +537,10 @@ DtCompileStao ( void **PFieldList); ACPI_STATUS +DtCompileTcpa ( + void **PFieldList); + +ACPI_STATUS DtCompileUefi ( void **PFieldList); diff --git a/source/compiler/dttable.c b/source/compiler/dttable.c index 22b4c9c..c5b2ef9 100644 --- a/source/compiler/dttable.c +++ b/source/compiler/dttable.c @@ -3122,6 +3122,77 @@ DtCompileStao ( /****************************************************************************** * + * FUNCTION: DtCompileTcpa + * + * PARAMETERS: PFieldList - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile TCPA. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileTcpa ( + void **List) +{ + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_SUBTABLE *Subtable; + ACPI_TABLE_TCPA_HDR *TcpaHeader; + DT_SUBTABLE *ParentTable; + ACPI_STATUS Status; + + + /* Compile the main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoTcpaHdr, + &Subtable, TRUE); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* + * Examine the PlatformClass field to determine the table type. + * Either a client or server table. Only one. + */ + TcpaHeader = ACPI_CAST_PTR (ACPI_TABLE_TCPA_HDR, ParentTable->Buffer); + + switch (TcpaHeader->PlatformClass) + { + case ACPI_TCPA_CLIENT_TABLE: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoTcpaClient, + &Subtable, TRUE); + break; + + case ACPI_TCPA_SERVER_TABLE: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoTcpaServer, + &Subtable, TRUE); + break; + + default: + + AcpiOsPrintf ("\n**** Unknown TCPA Platform Class 0x%X\n", + TcpaHeader->PlatformClass); + Status = AE_ERROR; + break; + } + + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + return (Status); +} + + +/****************************************************************************** + * * FUNCTION: DtGetGenericTableInfo * * PARAMETERS: Name - Generic type name diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h index 6d76f4d..6f3ed64 100644 --- a/source/compiler/dttemplate.h +++ b/source/compiler/dttemplate.h @@ -1144,13 +1144,19 @@ const unsigned char TemplateStao[] = const unsigned char TemplateTcpa[] = { - 0x54,0x43,0x50,0x41,0x32,0x00,0x00,0x00, /* 00000000 "TCPA2..." */ - 0x01,0x67,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".gINTEL " */ - 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ + 0x54,0x43,0x50,0x41,0x64,0x00,0x00,0x00, /* 00000000 "TCPAd..." */ + 0x02,0xFF,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x80,0x31,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 ".1..INTL" */ - 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ - 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ - 0x00,0x00 /* 00000030 ".." */ + 0x19,0x06,0x15,0x20,0x01,0x00,0x00,0x00, /* 00000020 "... ...." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ + 0x11,0x00,0xFF,0xEE,0xDD,0xCC,0xBB,0xAA, /* 00000030 "........" */ + 0x02,0x01,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000038 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x20,0x00,0x03, /* 00000040 "..... .." */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x20,0x00,0x03, /* 00000050 "..... .." */ + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ + 0x01,0x01,0x01,0x01 /* 00000060 "...." */ }; const unsigned char TemplateTpm2[] = diff --git a/source/compiler/new_table.txt b/source/compiler/new_table.txt old mode 100755 new mode 100644 diff --git a/source/compiler/prparser.l b/source/compiler/prparser.l index 10bd130..3ef0f45 100644 --- a/source/compiler/prparser.l +++ b/source/compiler/prparser.l @@ -50,14 +50,22 @@ #define STRING_SETUP strcpy (StringBuffer, PrParsertext);\ PrParserlval.str = StringBuffer -#define YY_NO_INPUT /* No file input, we use strings only */ - #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("prscanner") + + +/* Local prototypes */ + +static char +PrDoCommentType1 ( + void); + +static char +PrDoCommentType2 ( + void); %} %option noyywrap -%option nounput Number [0-9a-fA-F]+ HexNumber 0[xX][0-9a-fA-F]+ @@ -66,6 +74,8 @@ NewLine [\n] Identifier [a-zA-Z][0-9a-zA-Z]* %% +"/*" { if (!PrDoCommentType1 ()) {yyterminate ();} } +"//" { if (!PrDoCommentType2 ()) {yyterminate ();} } \( return (EXPOP_PAREN_OPEN); \) return (EXPOP_PAREN_CLOSE); @@ -151,3 +161,76 @@ PrTerminateLexer ( yy_delete_buffer (LexBuffer); } + + +/******************************************************************************** + * + * FUNCTION: PrDoCommentType1 + * + * PARAMETERS: none + * + * RETURN: none + * + * DESCRIPTION: Process a new legacy comment. Just toss it. + * + ******************************************************************************/ + +static char +PrDoCommentType1 ( + void) +{ + int c; + + +Loop: + while (((c = input ()) != '*') && (c != EOF)) + { + } + if (c == EOF) + { + return (FALSE); + } + + if (((c = input ()) != '/') && (c != EOF)) + { + unput (c); + goto Loop; + } + if (c == EOF) + { + return (FALSE); + } + + return (TRUE); +} + + +/******************************************************************************** + * + * FUNCTION: PrDoCommentType2 + * + * PARAMETERS: none + * + * RETURN: none + * + * DESCRIPTION: Process a new "//" comment. Just toss it. + * + ******************************************************************************/ + +static char +PrDoCommentType2 ( + void) +{ + int c; + + + while (((c = input ()) != '\n') && (c != EOF)) + { + } + if (c == EOF) + { + return (FALSE); + } + + return (TRUE); +} diff --git a/source/compiler/prparser.y b/source/compiler/prparser.y index 6758733..5ed30f5 100644 --- a/source/compiler/prparser.y +++ b/source/compiler/prparser.y @@ -213,8 +213,11 @@ void PrParsererror ( char const *Message) { + + sprintf (StringBuffer, "Preprocessor Parser : %s (near line %u)", + Message, Gbl_CurrentLineNumber); DtError (ASL_ERROR, ASL_MSG_SYNTAX, - NULL, (char *) Message); + NULL, (char *) StringBuffer); } diff --git a/source/compiler/prscan.c b/source/compiler/prscan.c index 393d801..27eb6be 100644 --- a/source/compiler/prscan.c +++ b/source/compiler/prscan.c @@ -120,7 +120,6 @@ static const PR_DIRECTIVE_INFO Gbl_DirectiveInfo[] = {"include", 0}, /* Argument is not standard format, so just use 0 here */ {"includebuffer", 0}, /* Argument is not standard format, so just use 0 here */ {"line", 1}, - {"loadbuffer", 0}, {"pragma", 1}, {"undef", 1}, {"warning", 1}, @@ -144,7 +143,7 @@ enum Gbl_DirectiveIndexes PR_DIRECTIVE_LINE, PR_DIRECTIVE_PRAGMA, PR_DIRECTIVE_UNDEF, - PR_DIRECTIVE_WARNING, + PR_DIRECTIVE_WARNING }; #define ASL_DIRECTIVE_NOT_FOUND -1 @@ -328,7 +327,7 @@ PrPreprocessInputFile ( PrGetNextLineInit (); - /* Scan line-by-line. Comments and blank lines are skipped by this function */ + /* Scan source line-by-line and process directives. Then write the .i file */ while ((Status = PrGetNextLine (Gbl_Files[ASL_FILE_INPUT].Handle)) != ASL_EOF) { @@ -479,6 +478,16 @@ PrDoDirective ( } /* + * Emit a line directive into the preprocessor file (.pre) after + * every matched directive. This is passed through to the compiler + * so that error/warning messages are kept in sync with the + * original source file. + */ + FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u \"%s\" // #%s\n", + Gbl_CurrentLineNumber, Gbl_Files[ASL_FILE_INPUT].Filename, + Gbl_DirectiveInfo[Directive].Name); + + /* * If we are currently ignoring this block and we encounter a #else or * #elif, we must ignore their blocks also if the parent block is also * being ignored. @@ -825,6 +834,9 @@ PrDoDirective ( PrError (ASL_WARNING, ASL_MSG_WARNING_DIRECTIVE, THIS_TOKEN_OFFSET (Token)); + + Gbl_SourceLine = 0; + Gbl_NextError = Gbl_ErrorLog; break; default: @@ -863,7 +875,9 @@ SyntaxError: ******************************************************************************/ #define PR_NORMAL_TEXT 0 -#define PR_WITHIN_COMMENT 1 +#define PR_MULTI_LINE_COMMENT 1 +#define PR_SINGLE_LINE_COMMENT 2 +#define PR_QUOTED_STRING 3 static UINT8 AcpiGbl_LineScanState = PR_NORMAL_TEXT; @@ -904,22 +918,55 @@ PrGetNextLine ( return (ASL_EOF); } - /* We need to worry about multi-line slash-asterisk comments */ - - /* Check for comment open */ + /* Update state machine as necessary */ - if ((AcpiGbl_LineScanState == PR_NORMAL_TEXT) && - (PreviousChar == '/') && (c == '*')) + switch (AcpiGbl_LineScanState) { - AcpiGbl_LineScanState = PR_WITHIN_COMMENT; - } + case PR_NORMAL_TEXT: - /* Check for comment close */ + /* Check for multi-line comment start */ - if ((AcpiGbl_LineScanState == PR_WITHIN_COMMENT) && - (PreviousChar == '*') && (c == '/')) - { - AcpiGbl_LineScanState = PR_NORMAL_TEXT; + if ((PreviousChar == '/') && (c == '*')) + { + AcpiGbl_LineScanState = PR_MULTI_LINE_COMMENT; + } + + /* Check for single-line comment start */ + + else if ((PreviousChar == '/') && (c == '/')) + { + AcpiGbl_LineScanState = PR_SINGLE_LINE_COMMENT; + } + + /* Check for quoted string start */ + + else if (PreviousChar == '"') + { + AcpiGbl_LineScanState = PR_QUOTED_STRING; + } + break; + + case PR_QUOTED_STRING: + + if (PreviousChar == '"') + { + AcpiGbl_LineScanState = PR_NORMAL_TEXT; + } + break; + + case PR_MULTI_LINE_COMMENT: + + /* Check for multi-line comment end */ + + if ((PreviousChar == '*') && (c == '/')) + { + AcpiGbl_LineScanState = PR_NORMAL_TEXT; + } + break; + + case PR_SINGLE_LINE_COMMENT: /* Just ignore text until EOL */ + default: + break; } /* Always copy the character into line buffer */ @@ -933,10 +980,21 @@ PrGetNextLine ( { /* Handle multi-line comments */ - if (AcpiGbl_LineScanState == PR_WITHIN_COMMENT) + if (AcpiGbl_LineScanState == PR_MULTI_LINE_COMMENT) { return (ASL_WITHIN_COMMENT); } + + /* End of single-line comment */ + + if (AcpiGbl_LineScanState == PR_SINGLE_LINE_COMMENT) + { + AcpiGbl_LineScanState = PR_NORMAL_TEXT; + return (AE_OK); + } + + /* Blank line */ + if (i == 1) { return (ASL_BLANK_LINE); diff --git a/source/components/debugger/dbcmds.c b/source/components/debugger/dbcmds.c index 4a2c4e8..d22bf4c 100644 --- a/source/components/debugger/dbcmds.c +++ b/source/components/debugger/dbcmds.c @@ -86,6 +86,8 @@ AcpiDbDoOneSleepState ( UINT8 SleepState); +static char *AcpiDbTraceMethodName = NULL; + /******************************************************************************* * * FUNCTION: AcpiDbConvertToNode @@ -1226,4 +1228,88 @@ AcpiDbGenerateSci ( #endif /* !ACPI_REDUCED_HARDWARE */ + +/******************************************************************************* + * + * FUNCTION: AcpiDbTrace + * + * PARAMETERS: EnableArg - ENABLE/AML to enable tracer + * DISABLE to disable tracer + * MethodArg - Method to trace + * OnceArg - Whether trace once + * + * RETURN: None + * + * DESCRIPTION: Control method tracing facility + * + ******************************************************************************/ + +void +AcpiDbTrace ( + char *EnableArg, + char *MethodArg, + char *OnceArg) +{ + UINT32 DebugLevel = 0; + UINT32 DebugLayer = 0; + UINT32 Flags = 0; + + + if (EnableArg) + { + AcpiUtStrupr (EnableArg); + } + if (OnceArg) + { + AcpiUtStrupr (OnceArg); + } + if (MethodArg) + { + if (AcpiDbTraceMethodName) + { + ACPI_FREE (AcpiDbTraceMethodName); + AcpiDbTraceMethodName = NULL; + } + AcpiDbTraceMethodName = ACPI_ALLOCATE (strlen (MethodArg) + 1); + if (!AcpiDbTraceMethodName) + { + AcpiOsPrintf ("Failed to allocate method name (%s)\n", MethodArg); + return; + } + strcpy (AcpiDbTraceMethodName, MethodArg); + } + if (!strcmp (EnableArg, "ENABLE") || + !strcmp (EnableArg, "METHOD") || + !strcmp (EnableArg, "OPCODE")) + { + if (!strcmp (EnableArg, "ENABLE")) + { + /* Inherit current console settings */ + + DebugLevel = AcpiGbl_DbConsoleDebugLevel; + DebugLayer = AcpiDbgLayer; + } + else + { + /* Restrict console output to trace points only */ + + DebugLevel = ACPI_LV_TRACE_POINT; + DebugLayer = ACPI_EXECUTER; + } + + Flags = ACPI_TRACE_ENABLED; + if (!strcmp (EnableArg, "OPCODE")) + { + Flags |= ACPI_TRACE_OPCODE; + } + if (OnceArg && !strcmp (OnceArg, "ONCE")) + { + Flags |= ACPI_TRACE_ONESHOT; + } + } + + (void) AcpiDebugTrace (AcpiDbTraceMethodName, + DebugLevel, DebugLayer, Flags); +} + #endif /* ACPI_DEBUGGER */ diff --git a/source/components/debugger/dbdisply.c b/source/components/debugger/dbdisply.c index aedc8bf..10821a2 100644 --- a/source/components/debugger/dbdisply.c +++ b/source/components/debugger/dbdisply.c @@ -49,7 +49,6 @@ #include "acparser.h" #include "acinterp.h" #include "acdebug.h" -#include "acdisasm.h" #ifdef ACPI_DEBUGGER @@ -513,7 +512,7 @@ AcpiDbDisplayLocals ( return; } - AcpiDmDisplayLocals (WalkState); + AcpiDbDecodeLocals (WalkState); } @@ -543,7 +542,7 @@ AcpiDbDisplayArguments ( return; } - AcpiDmDisplayArguments (WalkState); + AcpiDbDecodeArguments (WalkState); } @@ -599,7 +598,7 @@ AcpiDbDisplayResults ( { ObjDesc = Frame->Results.ObjDesc[Index]; AcpiOsPrintf ("Result%u: ", i); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); if (Index == 0) { Frame = Frame->Results.Next; @@ -763,7 +762,7 @@ AcpiDbDisplayResultObject ( } AcpiOsPrintf ("ResultObj: "); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); AcpiOsPrintf ("\n"); } @@ -793,7 +792,7 @@ AcpiDbDisplayArgumentObject ( } AcpiOsPrintf ("ArgObj: "); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); } diff --git a/source/components/debugger/dbinput.c b/source/components/debugger/dbinput.c index e588167..15dfb4b 100644 --- a/source/components/debugger/dbinput.c +++ b/source/components/debugger/dbinput.c @@ -218,7 +218,7 @@ static const ACPI_DB_COMMAND_INFO AcpiGbl_DbCommands[] = {"TABLES", 0}, {"TEMPLATE", 1}, {"TERMINATE", 0}, - {"TEST", 1}, + {"TEST", 1}, {"THREADS", 3}, {"TRACE", 1}, {"TREE", 0}, @@ -270,7 +270,7 @@ static const ACPI_DB_COMMAND_HELP AcpiGbl_DbCommandHelp[] = {1, " Owner [Depth]", "Display loaded namespace by object owner\n"}, {1, " Paths", "Display full pathnames of namespace objects\n"}, {1, " Predefined", "Check all predefined names\n"}, - {1, " Prefix []", "Set or Get current execution prefix\n"}, + {1, " Prefix []", "Set or Get current execution prefix\n"}, {1, " References ", "Find all references to object at addr\n"}, {1, " Resources [DeviceName]", "Display Device resources (no arg = all devices)\n"}, {1, " Set N ", "Set value for named integer\n"}, @@ -297,8 +297,12 @@ static const ACPI_DB_COMMAND_HELP AcpiGbl_DbCommandHelp[] = {1, " Results", "Display method result stack\n"}, {1, " Set <#> ", "Set method data (Arguments/Locals)\n"}, {1, " Stop", "Terminate control method\n"}, - {1, " Thread ", "Spawn threads to execute method(s)\n"}, - {1, " Trace ", "Trace method execution\n"}, + {1, " Thread ", "Spawn threads to execute method(s)\n"}, + {5, " Trace [] [Once]", "Trace control method execution\n"}, + {1, " Enable", "Enable all messages\n"}, + {1, " Disable", "Disable tracing\n"}, + {1, " Method", "Enable method execution messages\n"}, + {1, " Opcode", "Enable opcode execution messages\n"}, {1, " Tree", "Display control method calling tree\n"}, {1, " ", "Single step next AML opcode (over calls)\n"}, @@ -749,15 +753,22 @@ AcpiDbCommandDispatch ( return (AE_CTRL_TERMINATE); } - - /* Add all commands that come here to the history buffer */ - - AcpiDbAddToHistory (InputBuffer); + /* Find command and add to the history buffer */ ParamCount = AcpiDbGetLine (InputBuffer); CommandIndex = AcpiDbMatchCommand (AcpiGbl_DbArgs[0]); Temp = 0; + /* + * We don't want to add the !! command to the history buffer. It + * would cause an infinite loop because it would always be the + * previous command. + */ + if (CommandIndex != CMD_HISTORY_LAST) + { + AcpiDbAddToHistory (InputBuffer); + } + /* Verify that we have the minimum number of params */ if (ParamCount < AcpiGbl_DbCommands[CommandIndex].MinArgs) @@ -1110,7 +1121,7 @@ AcpiDbCommandDispatch ( case CMD_TRACE: - (void) AcpiDebugTrace (AcpiGbl_DbArgs[1],0,0,1); + AcpiDbTrace (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2], AcpiGbl_DbArgs[3]); break; case CMD_TREE: diff --git a/source/components/debugger/dbmethod.c b/source/components/debugger/dbmethod.c index 2b03d35..f42496a 100644 --- a/source/components/debugger/dbmethod.c +++ b/source/components/debugger/dbmethod.c @@ -46,7 +46,9 @@ #include "acdispat.h" #include "acnamesp.h" #include "acdebug.h" +#ifdef ACPI_DISASSEMBLER #include "acdisasm.h" +#endif #include "acparser.h" #include "acpredef.h" @@ -79,6 +81,7 @@ AcpiDbSetMethodBreakpoint ( ACPI_PARSE_OBJECT *Op) { UINT32 Address; + UINT32 AmlOffset; if (!Op) @@ -90,10 +93,12 @@ AcpiDbSetMethodBreakpoint ( /* Get and verify the breakpoint address */ Address = strtoul (Location, NULL, 16); - if (Address <= Op->Common.AmlOffset) + AmlOffset = (UINT32) ACPI_PTR_DIFF (Op->Common.Aml, + WalkState->ParserState.AmlStart); + if (Address <= AmlOffset) { AcpiOsPrintf ("Breakpoint %X is beyond current address %X\n", - Address, Op->Common.AmlOffset); + Address, AmlOffset); } /* Save breakpoint in current walk */ @@ -238,7 +243,7 @@ AcpiDbSetMethodData ( ObjDesc = WalkState->Arguments[Index].Object; AcpiOsPrintf ("Arg%u: ", Index); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); break; case 'L': @@ -261,7 +266,7 @@ AcpiDbSetMethodData ( ObjDesc = WalkState->LocalVariables[Index].Object; AcpiOsPrintf ("Local%u: ", Index); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); break; default: @@ -307,7 +312,9 @@ AcpiDbDisassembleAml ( NumStatements = strtoul (Statements, NULL, 0); } +#ifdef ACPI_DISASSEMBLER AcpiDmDisassemble (NULL, Op, NumStatements); +#endif } @@ -350,7 +357,7 @@ AcpiDbDisassembleMethod ( ObjDesc = Method->Object; - Op = AcpiPsCreateScopeOp (); + Op = AcpiPsCreateScopeOp (ObjDesc->Method.AmlStart); if (!Op) { return (AE_NO_MEMORY); @@ -390,6 +397,8 @@ AcpiDbDisassembleMethod ( WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); + +#ifdef ACPI_DISASSEMBER (void) AcpiDmParseDeferredOps (Op); /* Now we can disassemble the method */ @@ -397,6 +406,7 @@ AcpiDbDisassembleMethod ( AcpiGbl_DbOpt_Verbose = FALSE; AcpiDmDisassemble (NULL, Op, 0); AcpiGbl_DbOpt_Verbose = TRUE; +#endif AcpiPsDeleteParseTree (Op); diff --git a/source/components/debugger/dbnames.c b/source/components/debugger/dbnames.c index 0b56f07..716fd3c 100644 --- a/source/components/debugger/dbnames.c +++ b/source/components/debugger/dbnames.c @@ -385,7 +385,7 @@ AcpiDbWalkAndMatchName ( /* Get the full pathname to this object */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); @@ -582,7 +582,7 @@ AcpiDbWalkForSpecificObjects ( /* Get and display the full pathname to this object */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); @@ -886,7 +886,7 @@ AcpiDbBusWalk ( /* Get the full path to this device object */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); diff --git a/source/components/debugger/dbobject.c b/source/components/debugger/dbobject.c new file mode 100644 index 0000000..c7447af --- /dev/null +++ b/source/components/debugger/dbobject.c @@ -0,0 +1,525 @@ +/******************************************************************************* + * + * Module Name: dbobject - ACPI object decode and display + * + ******************************************************************************/ + +/* + * Copyright (C) 2000 - 2015, Intel Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + +#include "acpi.h" +#include "accommon.h" +#include "acnamesp.h" +#include "acdebug.h" +#ifdef ACPI_DISASSEMBLER +#include "acdisasm.h" +#endif + + +#ifdef ACPI_DEBUGGER + +#define _COMPONENT ACPI_CA_DEBUGGER + ACPI_MODULE_NAME ("dbobject") + +/* Local prototypes */ + +static void +AcpiDbDecodeNode ( + ACPI_NAMESPACE_NODE *Node); + + +/******************************************************************************* + * + * FUNCTION: AcpiDbDumpMethodInfo + * + * PARAMETERS: Status - Method execution status + * WalkState - Current state of the parse tree walk + * + * RETURN: None + * + * DESCRIPTION: Called when a method has been aborted because of an error. + * Dumps the method execution stack, and the method locals/args, + * and disassembles the AML opcode that failed. + * + ******************************************************************************/ + +void +AcpiDbDumpMethodInfo ( + ACPI_STATUS Status, + ACPI_WALK_STATE *WalkState) +{ + ACPI_THREAD_STATE *Thread; + + + /* Ignore control codes, they are not errors */ + + if ((Status & AE_CODE_MASK) == AE_CODE_CONTROL) + { + return; + } + + /* We may be executing a deferred opcode */ + + if (WalkState->DeferredNode) + { + AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); + return; + } + + /* + * If there is no Thread, we are not actually executing a method. + * This can happen when the iASL compiler calls the interpreter + * to perform constant folding. + */ + Thread = WalkState->Thread; + if (!Thread) + { + return; + } + + /* Display the method locals and arguments */ + + AcpiOsPrintf ("\n"); + AcpiDbDecodeLocals (WalkState); + AcpiOsPrintf ("\n"); + AcpiDbDecodeArguments (WalkState); + AcpiOsPrintf ("\n"); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDbDecodeInternalObject + * + * PARAMETERS: ObjDesc - Object to be displayed + * + * RETURN: None + * + * DESCRIPTION: Short display of an internal object. Numbers/Strings/Buffers. + * + ******************************************************************************/ + +void +AcpiDbDecodeInternalObject ( + ACPI_OPERAND_OBJECT *ObjDesc) +{ + UINT32 i; + + + if (!ObjDesc) + { + AcpiOsPrintf (" Uninitialized"); + return; + } + + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) + { + AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); + return; + } + + AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc)); + + switch (ObjDesc->Common.Type) + { + case ACPI_TYPE_INTEGER: + + AcpiOsPrintf (" %8.8X%8.8X", + ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); + break; + + case ACPI_TYPE_STRING: + + AcpiOsPrintf ("(%u) \"%.24s", + ObjDesc->String.Length, ObjDesc->String.Pointer); + + if (ObjDesc->String.Length > 24) + { + AcpiOsPrintf ("..."); + } + else + { + AcpiOsPrintf ("\""); + } + break; + + case ACPI_TYPE_BUFFER: + + AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length); + for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++) + { + AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]); + } + break; + + default: + + AcpiOsPrintf (" %p", ObjDesc); + break; + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDbDecodeNode + * + * PARAMETERS: Node - Object to be displayed + * + * RETURN: None + * + * DESCRIPTION: Short display of a namespace node + * + ******************************************************************************/ + +static void +AcpiDbDecodeNode ( + ACPI_NAMESPACE_NODE *Node) +{ + + AcpiOsPrintf (" Name %4.4s", + AcpiUtGetNodeName (Node)); + + if (Node->Flags & ANOBJ_METHOD_ARG) + { + AcpiOsPrintf (" [Method Arg]"); + } + if (Node->Flags & ANOBJ_METHOD_LOCAL) + { + AcpiOsPrintf (" [Method Local]"); + } + + switch (Node->Type) + { + /* These types have no attached object */ + + case ACPI_TYPE_DEVICE: + + AcpiOsPrintf (" Device"); + break; + + case ACPI_TYPE_THERMAL: + + AcpiOsPrintf (" Thermal Zone"); + break; + + default: + + AcpiDbDecodeInternalObject (AcpiNsGetAttachedObject (Node)); + break; + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDbDisplayInternalObject + * + * PARAMETERS: ObjDesc - Object to be displayed + * WalkState - Current walk state + * + * RETURN: None + * + * DESCRIPTION: Short display of an internal object + * + ******************************************************************************/ + +void +AcpiDbDisplayInternalObject ( + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + UINT8 Type; + + + AcpiOsPrintf ("%p ", ObjDesc); + + if (!ObjDesc) + { + AcpiOsPrintf ("\n"); + return; + } + + /* Decode the object type */ + + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) + { + case ACPI_DESC_TYPE_PARSER: + + AcpiOsPrintf (" "); + break; + + case ACPI_DESC_TYPE_NAMED: + + AcpiDbDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc); + break; + + case ACPI_DESC_TYPE_OPERAND: + + Type = ObjDesc->Common.Type; + if (Type > ACPI_TYPE_LOCAL_MAX) + { + AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type); + return; + } + + /* Decode the ACPI object type */ + + switch (ObjDesc->Common.Type) + { + case ACPI_TYPE_LOCAL_REFERENCE: + + AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc)); + + /* Decode the refererence */ + + switch (ObjDesc->Reference.Class) + { + case ACPI_REFCLASS_LOCAL: + + AcpiOsPrintf ("%X ", ObjDesc->Reference.Value); + if (WalkState) + { + ObjDesc = WalkState->LocalVariables + [ObjDesc->Reference.Value].Object; + AcpiOsPrintf ("%p", ObjDesc); + AcpiDbDecodeInternalObject (ObjDesc); + } + break; + + case ACPI_REFCLASS_ARG: + + AcpiOsPrintf ("%X ", ObjDesc->Reference.Value); + if (WalkState) + { + ObjDesc = WalkState->Arguments + [ObjDesc->Reference.Value].Object; + AcpiOsPrintf ("%p", ObjDesc); + AcpiDbDecodeInternalObject (ObjDesc); + } + break; + + case ACPI_REFCLASS_INDEX: + + switch (ObjDesc->Reference.TargetType) + { + case ACPI_TYPE_BUFFER_FIELD: + + AcpiOsPrintf ("%p", ObjDesc->Reference.Object); + AcpiDbDecodeInternalObject (ObjDesc->Reference.Object); + break; + + case ACPI_TYPE_PACKAGE: + + AcpiOsPrintf ("%p", ObjDesc->Reference.Where); + if (!ObjDesc->Reference.Where) + { + AcpiOsPrintf (" Uninitialized WHERE pointer"); + } + else + { + AcpiDbDecodeInternalObject ( + *(ObjDesc->Reference.Where)); + } + break; + + default: + + AcpiOsPrintf ("Unknown index target type"); + break; + } + break; + + case ACPI_REFCLASS_REFOF: + + if (!ObjDesc->Reference.Object) + { + AcpiOsPrintf ("Uninitialized reference subobject pointer"); + break; + } + + /* Reference can be to a Node or an Operand object */ + + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object)) + { + case ACPI_DESC_TYPE_NAMED: + AcpiDbDecodeNode (ObjDesc->Reference.Object); + break; + + case ACPI_DESC_TYPE_OPERAND: + AcpiDbDecodeInternalObject (ObjDesc->Reference.Object); + break; + + default: + break; + } + break; + + case ACPI_REFCLASS_NAME: + + AcpiDbDecodeNode (ObjDesc->Reference.Node); + break; + + case ACPI_REFCLASS_DEBUG: + case ACPI_REFCLASS_TABLE: + + AcpiOsPrintf ("\n"); + break; + + default: /* Unknown reference class */ + + AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class); + break; + } + break; + + default: + + AcpiOsPrintf (" "); + AcpiDbDecodeInternalObject (ObjDesc); + break; + } + break; + + default: + + AcpiOsPrintf (" [%s]", + AcpiUtGetDescriptorName (ObjDesc)); + break; + } + + AcpiOsPrintf ("\n"); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDbDecodeLocals + * + * PARAMETERS: WalkState - State for current method + * + * RETURN: None + * + * DESCRIPTION: Display all locals for the currently running control method + * + ******************************************************************************/ + +void +AcpiDbDecodeLocals ( + ACPI_WALK_STATE *WalkState) +{ + UINT32 i; + ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_NAMESPACE_NODE *Node; + + + ObjDesc = WalkState->MethodDesc; + Node = WalkState->MethodNode; + if (!Node) + { + AcpiOsPrintf ( + "No method node (Executing subtree for buffer or opregion)\n"); + return; + } + + if (Node->Type != ACPI_TYPE_METHOD) + { + AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); + return; + } + + AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", + AcpiUtGetNodeName (Node)); + + for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) + { + ObjDesc = WalkState->LocalVariables[i].Object; + AcpiOsPrintf (" Local%X: ", i); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDbDecodeArguments + * + * PARAMETERS: WalkState - State for current method + * + * RETURN: None + * + * DESCRIPTION: Display all arguments for the currently running control method + * + ******************************************************************************/ + +void +AcpiDbDecodeArguments ( + ACPI_WALK_STATE *WalkState) +{ + UINT32 i; + ACPI_OPERAND_OBJECT *ObjDesc; + ACPI_NAMESPACE_NODE *Node; + + + ObjDesc = WalkState->MethodDesc; + Node = WalkState->MethodNode; + if (!Node) + { + AcpiOsPrintf ( + "No method node (Executing subtree for buffer or opregion)\n"); + return; + } + + if (Node->Type != ACPI_TYPE_METHOD) + { + AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); + return; + } + + AcpiOsPrintf ( + "Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n", + AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel); + + for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) + { + ObjDesc = WalkState->Arguments[i].Object; + AcpiOsPrintf (" Arg%u: ", i); + AcpiDbDisplayInternalObject (ObjDesc, WalkState); + } +} + +#endif diff --git a/source/components/debugger/dbutils.c b/source/components/debugger/dbutils.c index a089344..4a7cf41 100644 --- a/source/components/debugger/dbutils.c +++ b/source/components/debugger/dbutils.c @@ -45,7 +45,6 @@ #include "accommon.h" #include "acnamesp.h" #include "acdebug.h" -#include "acdisasm.h" #ifdef ACPI_DEBUGGER @@ -223,7 +222,7 @@ AcpiDbDumpExternalObject ( case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[Object Reference] = "); - AcpiDmDisplayInternalObject (ObjDesc->Reference.Handle, NULL); + AcpiDbDisplayInternalObject (ObjDesc->Reference.Handle, NULL); break; case ACPI_TYPE_PROCESSOR: diff --git a/source/components/debugger/dbxface.c b/source/components/debugger/dbxface.c index 33d5e36..6dcf1e5 100644 --- a/source/components/debugger/dbxface.c +++ b/source/components/debugger/dbxface.c @@ -45,7 +45,9 @@ #include "accommon.h" #include "amlcode.h" #include "acdebug.h" +#ifdef ACPI_DISASSEMBLER #include "acdisasm.h" +#endif #ifdef ACPI_DEBUGGER @@ -179,6 +181,7 @@ AcpiDbSingleStep ( UINT32 OriginalDebugLevel; ACPI_PARSE_OBJECT *DisplayOp; ACPI_PARSE_OBJECT *ParentOp; + UINT32 AmlOffset; ACPI_FUNCTION_ENTRY (); @@ -192,15 +195,18 @@ AcpiDbSingleStep ( return (AE_ABORT_METHOD); } + AmlOffset = (UINT32) ACPI_PTR_DIFF (Op->Common.Aml, + WalkState->ParserState.AmlStart); + /* Check for single-step breakpoint */ if (WalkState->MethodBreakpoint && - (WalkState->MethodBreakpoint <= Op->Common.AmlOffset)) + (WalkState->MethodBreakpoint <= AmlOffset)) { /* Check if the breakpoint has been reached or passed */ /* Hit the breakpoint, resume single step, reset breakpoint */ - AcpiOsPrintf ("***Break*** at AML offset %X\n", Op->Common.AmlOffset); + AcpiOsPrintf ("***Break*** at AML offset %X\n", AmlOffset); AcpiGbl_CmSingleStep = TRUE; AcpiGbl_StepToNextCall = FALSE; WalkState->MethodBreakpoint = 0; @@ -209,10 +215,10 @@ AcpiDbSingleStep ( /* Check for user breakpoint (Must be on exact Aml offset) */ else if (WalkState->UserBreakpoint && - (WalkState->UserBreakpoint == Op->Common.AmlOffset)) + (WalkState->UserBreakpoint == AmlOffset)) { AcpiOsPrintf ("***UserBreakpoint*** at AML offset %X\n", - Op->Common.AmlOffset); + AmlOffset); AcpiGbl_CmSingleStep = TRUE; AcpiGbl_StepToNextCall = FALSE; WalkState->MethodBreakpoint = 0; @@ -308,7 +314,9 @@ AcpiDbSingleStep ( /* Now we can display it */ +#ifdef ACPI_DISASSEMBLER AcpiDmDisassemble (WalkState, DisplayOp, ACPI_UINT32_MAX); +#endif if ((Op->Common.AmlOpcode == AML_IF_OP) || (Op->Common.AmlOpcode == AML_WHILE_OP)) diff --git a/source/components/disassembler/dmdeferred.c b/source/components/disassembler/dmdeferred.c index 1b4ef20..35d5650 100644 --- a/source/components/disassembler/dmdeferred.c +++ b/source/components/disassembler/dmdeferred.c @@ -165,7 +165,6 @@ AcpiDmDeferredParse ( ACPI_STATUS Status; ACPI_PARSE_OBJECT *SearchOp; ACPI_PARSE_OBJECT *StartOp; - UINT32 BaseAmlOffset; ACPI_PARSE_OBJECT *NewRootOp; ACPI_PARSE_OBJECT *ExtraOp; @@ -202,19 +201,10 @@ AcpiDmDeferredParse ( WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); - /* - * We need to update all of the AML offsets, since the parser thought - * that the method began at offset zero. In reality, it began somewhere - * within the ACPI table, at the BaseAmlOffset. Walk the entire tree that - * was just created and update the AmlOffset in each Op. - */ - BaseAmlOffset = (Op->Common.Value.Arg)->Common.AmlOffset + 1; StartOp = (Op->Common.Value.Arg)->Common.Next; SearchOp = StartOp; - while (SearchOp) { - SearchOp->Common.AmlOffset += BaseAmlOffset; SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); } diff --git a/source/components/disassembler/dmnames.c b/source/components/disassembler/dmnames.c index f942aea..fc6a2cc 100644 --- a/source/components/disassembler/dmnames.c +++ b/source/components/disassembler/dmnames.c @@ -179,7 +179,7 @@ AcpiPsDisplayObjectPathname ( /* Convert NamedDesc/handle to a full pathname */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (Node, &Buffer); + Status = AcpiNsHandleToPathname (Node, &Buffer, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("****Could not get pathname****)"); diff --git a/source/components/disassembler/dmobject.c b/source/components/disassembler/dmobject.c deleted file mode 100644 index 6023c78..0000000 --- a/source/components/disassembler/dmobject.c +++ /dev/null @@ -1,576 +0,0 @@ -/******************************************************************************* - * - * Module Name: dmobject - ACPI object decode and display - * - ******************************************************************************/ - -/* - * Copyright (C) 2000 - 2015, Intel Corp. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions, and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * substantially similar to the "NO WARRANTY" disclaimer below - * ("Disclaimer") and any redistribution must be conditioned upon - * including a substantially similar Disclaimer requirement for further - * binary redistribution. - * 3. Neither the names of the above-listed copyright holders nor the names - * of any contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGES. - */ - -#include "acpi.h" -#include "accommon.h" -#include "acnamesp.h" -#include "acdisasm.h" - - -#ifdef ACPI_DISASSEMBLER - -#define _COMPONENT ACPI_CA_DEBUGGER - ACPI_MODULE_NAME ("dmnames") - -/* Local prototypes */ - -static void -AcpiDmDecodeNode ( - ACPI_NAMESPACE_NODE *Node); - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDumpMethodInfo - * - * PARAMETERS: Status - Method execution status - * WalkState - Current state of the parse tree walk - * Op - Executing parse op - * - * RETURN: None - * - * DESCRIPTION: Called when a method has been aborted because of an error. - * Dumps the method execution stack, and the method locals/args, - * and disassembles the AML opcode that failed. - * - ******************************************************************************/ - -void -AcpiDmDumpMethodInfo ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *Next; - ACPI_THREAD_STATE *Thread; - ACPI_WALK_STATE *NextWalkState; - ACPI_NAMESPACE_NODE *PreviousMethod = NULL; - - - /* Ignore control codes, they are not errors */ - - if ((Status & AE_CODE_MASK) == AE_CODE_CONTROL) - { - return; - } - - /* We may be executing a deferred opcode */ - - if (WalkState->DeferredNode) - { - AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); - return; - } - - /* - * If there is no Thread, we are not actually executing a method. - * This can happen when the iASL compiler calls the interpreter - * to perform constant folding. - */ - Thread = WalkState->Thread; - if (!Thread) - { - return; - } - - /* Display exception and method name */ - - AcpiOsPrintf ("\n**** Exception %s during execution of method ", - AcpiFormatException (Status)); - AcpiNsPrintNodePathname (WalkState->MethodNode, NULL); - - /* Display stack of executing methods */ - - AcpiOsPrintf ("\n\nMethod Execution Stack:\n"); - NextWalkState = Thread->WalkStateList; - - /* Walk list of linked walk states */ - - while (NextWalkState) - { - AcpiOsPrintf (" Method [%4.4s] executing: ", - AcpiUtGetNodeName (NextWalkState->MethodNode)); - - /* First method is the currently executing method */ - - if (NextWalkState == WalkState) - { - if (Op) - { - /* Display currently executing ASL statement */ - - Next = Op->Common.Next; - Op->Common.Next = NULL; - - AcpiDmDisassemble (NextWalkState, Op, ACPI_UINT32_MAX); - Op->Common.Next = Next; - } - } - else - { - /* - * This method has called another method - * NOTE: the method call parse subtree is already deleted at this - * point, so we cannot disassemble the method invocation. - */ - AcpiOsPrintf ("Call to method "); - AcpiNsPrintNodePathname (PreviousMethod, NULL); - } - - PreviousMethod = NextWalkState->MethodNode; - NextWalkState = NextWalkState->Next; - AcpiOsPrintf ("\n"); - } - - /* Display the method locals and arguments */ - - AcpiOsPrintf ("\n"); - AcpiDmDisplayLocals (WalkState); - AcpiOsPrintf ("\n"); - AcpiDmDisplayArguments (WalkState); - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDecodeInternalObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * - * RETURN: None - * - * DESCRIPTION: Short display of an internal object. Numbers/Strings/Buffers. - * - ******************************************************************************/ - -void -AcpiDmDecodeInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc) -{ - UINT32 i; - - - if (!ObjDesc) - { - AcpiOsPrintf (" Uninitialized"); - return; - } - - if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) - { - AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); - return; - } - - AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc)); - - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_INTEGER: - - AcpiOsPrintf (" %8.8X%8.8X", - ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); - break; - - case ACPI_TYPE_STRING: - - AcpiOsPrintf ("(%u) \"%.24s", - ObjDesc->String.Length, ObjDesc->String.Pointer); - - if (ObjDesc->String.Length > 24) - { - AcpiOsPrintf ("..."); - } - else - { - AcpiOsPrintf ("\""); - } - break; - - case ACPI_TYPE_BUFFER: - - AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length); - for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++) - { - AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]); - } - break; - - default: - - AcpiOsPrintf (" %p", ObjDesc); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDecodeNode - * - * PARAMETERS: Node - Object to be displayed - * - * RETURN: None - * - * DESCRIPTION: Short display of a namespace node - * - ******************************************************************************/ - -static void -AcpiDmDecodeNode ( - ACPI_NAMESPACE_NODE *Node) -{ - - AcpiOsPrintf (" Name %4.4s", - AcpiUtGetNodeName (Node)); - - if (Node->Flags & ANOBJ_METHOD_ARG) - { - AcpiOsPrintf (" [Method Arg]"); - } - if (Node->Flags & ANOBJ_METHOD_LOCAL) - { - AcpiOsPrintf (" [Method Local]"); - } - - switch (Node->Type) - { - /* These types have no attached object */ - - case ACPI_TYPE_DEVICE: - - AcpiOsPrintf (" Device"); - break; - - case ACPI_TYPE_THERMAL: - - AcpiOsPrintf (" Thermal Zone"); - break; - - default: - - AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node)); - break; - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayInternalObject - * - * PARAMETERS: ObjDesc - Object to be displayed - * WalkState - Current walk state - * - * RETURN: None - * - * DESCRIPTION: Short display of an internal object - * - ******************************************************************************/ - -void -AcpiDmDisplayInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState) -{ - UINT8 Type; - - - AcpiOsPrintf ("%p ", ObjDesc); - - if (!ObjDesc) - { - AcpiOsPrintf ("\n"); - return; - } - - /* Decode the object type */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) - { - case ACPI_DESC_TYPE_PARSER: - - AcpiOsPrintf (" "); - break; - - case ACPI_DESC_TYPE_NAMED: - - AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc); - break; - - case ACPI_DESC_TYPE_OPERAND: - - Type = ObjDesc->Common.Type; - if (Type > ACPI_TYPE_LOCAL_MAX) - { - AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type); - return; - } - - /* Decode the ACPI object type */ - - switch (ObjDesc->Common.Type) - { - case ACPI_TYPE_LOCAL_REFERENCE: - - AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc)); - - /* Decode the refererence */ - - switch (ObjDesc->Reference.Class) - { - case ACPI_REFCLASS_LOCAL: - - AcpiOsPrintf ("%X ", ObjDesc->Reference.Value); - if (WalkState) - { - ObjDesc = WalkState->LocalVariables - [ObjDesc->Reference.Value].Object; - AcpiOsPrintf ("%p", ObjDesc); - AcpiDmDecodeInternalObject (ObjDesc); - } - break; - - case ACPI_REFCLASS_ARG: - - AcpiOsPrintf ("%X ", ObjDesc->Reference.Value); - if (WalkState) - { - ObjDesc = WalkState->Arguments - [ObjDesc->Reference.Value].Object; - AcpiOsPrintf ("%p", ObjDesc); - AcpiDmDecodeInternalObject (ObjDesc); - } - break; - - case ACPI_REFCLASS_INDEX: - - switch (ObjDesc->Reference.TargetType) - { - case ACPI_TYPE_BUFFER_FIELD: - - AcpiOsPrintf ("%p", ObjDesc->Reference.Object); - AcpiDmDecodeInternalObject (ObjDesc->Reference.Object); - break; - - case ACPI_TYPE_PACKAGE: - - AcpiOsPrintf ("%p", ObjDesc->Reference.Where); - if (!ObjDesc->Reference.Where) - { - AcpiOsPrintf (" Uninitialized WHERE pointer"); - } - else - { - AcpiDmDecodeInternalObject ( - *(ObjDesc->Reference.Where)); - } - break; - - default: - - AcpiOsPrintf ("Unknown index target type"); - break; - } - break; - - case ACPI_REFCLASS_REFOF: - - if (!ObjDesc->Reference.Object) - { - AcpiOsPrintf ("Uninitialized reference subobject pointer"); - break; - } - - /* Reference can be to a Node or an Operand object */ - - switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object)) - { - case ACPI_DESC_TYPE_NAMED: - AcpiDmDecodeNode (ObjDesc->Reference.Object); - break; - - case ACPI_DESC_TYPE_OPERAND: - AcpiDmDecodeInternalObject (ObjDesc->Reference.Object); - break; - - default: - break; - } - break; - - case ACPI_REFCLASS_NAME: - - AcpiDmDecodeNode (ObjDesc->Reference.Node); - break; - - case ACPI_REFCLASS_DEBUG: - case ACPI_REFCLASS_TABLE: - - AcpiOsPrintf ("\n"); - break; - - default: /* Unknown reference class */ - - AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class); - break; - } - break; - - default: - - AcpiOsPrintf (" "); - AcpiDmDecodeInternalObject (ObjDesc); - break; - } - break; - - default: - - AcpiOsPrintf (" [%s]", - AcpiUtGetDescriptorName (ObjDesc)); - break; - } - - AcpiOsPrintf ("\n"); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayLocals - * - * PARAMETERS: WalkState - State for current method - * - * RETURN: None - * - * DESCRIPTION: Display all locals for the currently running control method - * - ******************************************************************************/ - -void -AcpiDmDisplayLocals ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - if (!Node) - { - AcpiOsPrintf ( - "No method node (Executing subtree for buffer or opregion)\n"); - return; - } - - if (Node->Type != ACPI_TYPE_METHOD) - { - AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); - return; - } - - AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", - AcpiUtGetNodeName (Node)); - - for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) - { - ObjDesc = WalkState->LocalVariables[i].Object; - AcpiOsPrintf (" Local%X: ", i); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - } -} - - -/******************************************************************************* - * - * FUNCTION: AcpiDmDisplayArguments - * - * PARAMETERS: WalkState - State for current method - * - * RETURN: None - * - * DESCRIPTION: Display all arguments for the currently running control method - * - ******************************************************************************/ - -void -AcpiDmDisplayArguments ( - ACPI_WALK_STATE *WalkState) -{ - UINT32 i; - ACPI_OPERAND_OBJECT *ObjDesc; - ACPI_NAMESPACE_NODE *Node; - - - ObjDesc = WalkState->MethodDesc; - Node = WalkState->MethodNode; - if (!Node) - { - AcpiOsPrintf ( - "No method node (Executing subtree for buffer or opregion)\n"); - return; - } - - if (Node->Type != ACPI_TYPE_METHOD) - { - AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); - return; - } - - AcpiOsPrintf ( - "Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n", - AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel); - - for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) - { - ObjDesc = WalkState->Arguments[i].Object; - AcpiOsPrintf (" Arg%u: ", i); - AcpiDmDisplayInternalObject (ObjDesc, WalkState); - } -} - -#endif diff --git a/source/components/disassembler/dmopcode.c b/source/components/disassembler/dmopcode.c index 60345fc..35f9eef 100644 --- a/source/components/disassembler/dmopcode.c +++ b/source/components/disassembler/dmopcode.c @@ -48,6 +48,7 @@ #include "acdisasm.h" #include "acinterp.h" #include "acnamesp.h" +#include "acdebug.h" #ifdef ACPI_DISASSEMBLER @@ -967,7 +968,7 @@ AcpiDmDisassembleOneOp ( (WalkState->Results) && (WalkState->ResultCount)) { - AcpiDmDecodeInternalObject ( + AcpiDbDecodeInternalObject ( WalkState->Results->Results.ObjDesc [ (WalkState->ResultCount - 1) % ACPI_RESULTS_FRAME_OBJ_NUM]); diff --git a/source/components/disassembler/dmwalk.c b/source/components/disassembler/dmwalk.c index 6a8c505..8ae0dc8 100644 --- a/source/components/disassembler/dmwalk.c +++ b/source/components/disassembler/dmwalk.c @@ -313,6 +313,8 @@ AcpiDmBlockType ( return (BLOCK_NONE); } + /*lint -fallthrough */ + default: OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); @@ -410,7 +412,23 @@ AcpiDmDescendingOp ( const ACPI_OPCODE_INFO *OpInfo; UINT32 Name; ACPI_PARSE_OBJECT *NextOp; + UINT32 AmlOffset; + + + if (AcpiGbl_DbOpt_Verbose && AcpiGbl_PreviousOp) + { + /* Dump the entire statement in AML byte code */ + if (Op->Common.Aml > AcpiGbl_PreviousOp->Common.Aml) + { + AcpiOsPrintf ("\n"); + AcpiUtDumpBuffer (AcpiGbl_PreviousOp->Common.Aml, + (Op->Common.Aml - AcpiGbl_PreviousOp->Common.Aml), + DB_BYTE_DISPLAY, 0); + AcpiDmIndent (Level); + } + } + AcpiGbl_PreviousOp = Op; if (Op->Common.DisasmFlags & ACPI_PARSEOP_IGNORE) { @@ -427,10 +445,12 @@ AcpiDmDescendingOp ( if (Info->WalkState) { + AmlOffset = (UINT32) ACPI_PTR_DIFF (Op->Common.Aml, + Info->WalkState->ParserState.AmlStart); VERBOSE_PRINT ((DB_FULL_OP_INFO, (Info->WalkState->MethodNode ? Info->WalkState->MethodNode->Name.Ascii : " "), - Op->Common.AmlOffset, (UINT32) Op->Common.AmlOpcode)); + AmlOffset, (UINT32) Op->Common.AmlOpcode)); } if (Op->Common.AmlOpcode == AML_SCOPE_OP) diff --git a/source/components/dispatcher/dsargs.c b/source/components/dispatcher/dsargs.c index c9a1709..5d2d5f5 100644 --- a/source/components/dispatcher/dsargs.c +++ b/source/components/dispatcher/dsargs.c @@ -94,7 +94,7 @@ AcpiDsExecuteArguments ( /* Allocate a new parser op to be the root of the parsed tree */ - Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP); + Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP, AmlStart); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -141,7 +141,7 @@ AcpiDsExecuteArguments ( /* Evaluate the deferred arguments */ - Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP); + Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP, AmlStart); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/source/components/dispatcher/dsdebug.c b/source/components/dispatcher/dsdebug.c new file mode 100644 index 0000000..527bbf7 --- /dev/null +++ b/source/components/dispatcher/dsdebug.c @@ -0,0 +1,249 @@ +/****************************************************************************** + * + * Module Name: dsdebug - Parser/Interpreter interface - debugging + * + *****************************************************************************/ + +/* + * Copyright (C) 2000 - 2015, Intel Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + +#include "acpi.h" +#include "accommon.h" +#include "acdispat.h" +#include "acnamesp.h" +#include "acdisasm.h" +#include "acinterp.h" + + +#define _COMPONENT ACPI_DISPATCHER + ACPI_MODULE_NAME ("dsdebug") + + +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) + +/* Local prototypes */ + +static void +AcpiDsPrintNodePathname ( + ACPI_NAMESPACE_NODE *Node, + const char *Message); + + +/******************************************************************************* + * + * FUNCTION: AcpiDsPrintNodePathname + * + * PARAMETERS: Node - Object + * Message - Prefix message + * + * DESCRIPTION: Print an object's full namespace pathname + * Manages allocation/freeing of a pathname buffer + * + ******************************************************************************/ + +static void +AcpiDsPrintNodePathname ( + ACPI_NAMESPACE_NODE *Node, + const char *Message) +{ + ACPI_BUFFER Buffer; + ACPI_STATUS Status; + + + ACPI_FUNCTION_TRACE (DsPrintNodePathname); + + if (!Node) + { + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "[NULL NAME]")); + return_VOID; + } + + /* Convert handle to full pathname and print it (with supplied message) */ + + Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; + + Status = AcpiNsHandleToPathname (Node, &Buffer, FALSE); + if (ACPI_SUCCESS (Status)) + { + if (Message) + { + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "%s ", Message)); + } + + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "[%s] (Node %p)", + (char *) Buffer.Pointer, Node)); + ACPI_FREE (Buffer.Pointer); + } + + return_VOID; +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDsDumpMethodStack + * + * PARAMETERS: Status - Method execution status + * WalkState - Current state of the parse tree walk + * Op - Executing parse op + * + * RETURN: None + * + * DESCRIPTION: Called when a method has been aborted because of an error. + * Dumps the method execution stack. + * + ******************************************************************************/ + +void +AcpiDsDumpMethodStack ( + ACPI_STATUS Status, + ACPI_WALK_STATE *WalkState, + ACPI_PARSE_OBJECT *Op) +{ + ACPI_PARSE_OBJECT *Next; + ACPI_THREAD_STATE *Thread; + ACPI_WALK_STATE *NextWalkState; + ACPI_NAMESPACE_NODE *PreviousMethod = NULL; + ACPI_OPERAND_OBJECT *MethodDesc; + + + ACPI_FUNCTION_TRACE (DsDumpMethodStack); + + /* Ignore control codes, they are not errors */ + + if ((Status & AE_CODE_MASK) == AE_CODE_CONTROL) + { + return_VOID; + } + + /* We may be executing a deferred opcode */ + + if (WalkState->DeferredNode) + { + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + "Executing subtree for Buffer/Package/Region\n")); + return_VOID; + } + + /* + * If there is no Thread, we are not actually executing a method. + * This can happen when the iASL compiler calls the interpreter + * to perform constant folding. + */ + Thread = WalkState->Thread; + if (!Thread) + { + return_VOID; + } + + /* Display exception and method name */ + + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + "\n**** Exception %s during execution of method ", + AcpiFormatException (Status))); + AcpiDsPrintNodePathname (WalkState->MethodNode, NULL); + + /* Display stack of executing methods */ + + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, + "\n\nMethod Execution Stack:\n")); + NextWalkState = Thread->WalkStateList; + + /* Walk list of linked walk states */ + + while (NextWalkState) + { + MethodDesc = NextWalkState->MethodDesc; + if (MethodDesc) + { + AcpiExStopTraceMethod ( + (ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, + MethodDesc, WalkState); + } + + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + " Method [%4.4s] executing: ", + AcpiUtGetNodeName (NextWalkState->MethodNode))); + + /* First method is the currently executing method */ + + if (NextWalkState == WalkState) + { + if (Op) + { + /* Display currently executing ASL statement */ + + Next = Op->Common.Next; + Op->Common.Next = NULL; + +#ifdef ACPI_DISASSEMBLER + AcpiDmDisassemble (NextWalkState, Op, ACPI_UINT32_MAX); +#endif + Op->Common.Next = Next; + } + } + else + { + /* + * This method has called another method + * NOTE: the method call parse subtree is already deleted at this + * point, so we cannot disassemble the method invocation. + */ + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "Call to method ")); + AcpiDsPrintNodePathname (PreviousMethod, NULL); + } + + PreviousMethod = NextWalkState->MethodNode; + NextWalkState = NextWalkState->Next; + ACPI_DEBUG_PRINT_RAW ((ACPI_DB_DISPATCH, "\n")); + } + + return_VOID; +} + +#else + +void +AcpiDsDumpMethodStack ( + ACPI_STATUS Status, + ACPI_WALK_STATE *WalkState, + ACPI_PARSE_OBJECT *Op) +{ + return; +} + +#endif diff --git a/source/components/dispatcher/dsmethod.c b/source/components/dispatcher/dsmethod.c index f1c3be8..95e0cb3 100644 --- a/source/components/dispatcher/dsmethod.c +++ b/source/components/dispatcher/dsmethod.c @@ -46,9 +46,9 @@ #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" -#include "acdisasm.h" #include "acparser.h" #include "amlcode.h" +#include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER @@ -109,7 +109,7 @@ AcpiDsAutoSerializeMethod ( /* Create/Init a root op for the method parse tree */ - Op = AcpiPsAllocOp (AML_METHOD_OP); + Op = AcpiPsAllocOp (AML_METHOD_OP, ObjDesc->Method.AmlStart); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -213,7 +213,7 @@ AcpiDsDetectNamedOpcodes ( * RETURN: Status * * DESCRIPTION: Called on method error. Invoke the global exception handler if - * present, dump the method data if the disassembler is configured + * present, dump the method data if the debugger is configured * * Note: Allows the exception handler to change the status code * @@ -224,6 +224,9 @@ AcpiDsMethodError ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState) { + UINT32 AmlOffset; + + ACPI_FUNCTION_ENTRY (); @@ -247,23 +250,28 @@ AcpiDsMethodError ( * Handler can map the exception code to anything it wants, including * AE_OK, in which case the executing method will not be aborted. */ + AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, + WalkState->ParserState.AmlStart); + Status = AcpiGbl_ExceptionHandler (Status, WalkState->MethodNode ? WalkState->MethodNode->Name.Integer : 0, - WalkState->Opcode, WalkState->AmlOffset, NULL); + WalkState->Opcode, AmlOffset, NULL); AcpiExEnterInterpreter (); } AcpiDsClearImplicitReturn (WalkState); -#ifdef ACPI_DISASSEMBLER if (ACPI_FAILURE (Status)) { - /* Display method locals/args if disassembler is present */ + AcpiDsDumpMethodStack (Status, WalkState, WalkState->Op); - AcpiDmDumpMethodInfo (Status, WalkState, WalkState->Op); - } + /* Display method locals/args if debugger is present */ + +#ifdef ACPI_DEBUGGER + AcpiDbDumpMethodInfo (Status, WalkState); #endif + } return (Status); } @@ -349,6 +357,8 @@ AcpiDsBeginMethodExecution ( return_ACPI_STATUS (AE_NULL_ENTRY); } + AcpiExStartTraceMethod (MethodNode, ObjDesc, WalkState); + /* Prevent wraparound of thread count */ if (ObjDesc->Method.ThreadCount == ACPI_UINT8_MAX) @@ -610,10 +620,7 @@ Cleanup: /* On error, we must terminate the method properly */ AcpiDsTerminateControlMethod (ObjDesc, NextWalkState); - if (NextWalkState) - { - AcpiDsDeleteWalkState (NextWalkState); - } + AcpiDsDeleteWalkState (NextWalkState); return_ACPI_STATUS (Status); } @@ -870,5 +877,8 @@ AcpiDsTerminateControlMethod ( } } + AcpiExStopTraceMethod ((ACPI_NAMESPACE_NODE *) MethodDesc->Method.Node, + MethodDesc, WalkState); + return_VOID; } diff --git a/source/components/dispatcher/dswload.c b/source/components/dispatcher/dswload.c index 37b7b39..bcc7868 100644 --- a/source/components/dispatcher/dswload.c +++ b/source/components/dispatcher/dswload.c @@ -398,7 +398,7 @@ AcpiDsLoad1BeginOp ( { /* Create a new op */ - Op = AcpiPsAllocOp (WalkState->Opcode); + Op = AcpiPsAllocOp (WalkState->Opcode, WalkState->Aml); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/source/components/dispatcher/dswload2.c b/source/components/dispatcher/dswload2.c index f7d43fe..f6095d9 100644 --- a/source/components/dispatcher/dswload2.c +++ b/source/components/dispatcher/dswload2.c @@ -344,7 +344,7 @@ AcpiDsLoad2BeginOp ( { /* Create a new op */ - Op = AcpiPsAllocOp (WalkState->Opcode); + Op = AcpiPsAllocOp (WalkState->Opcode, WalkState->Aml); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/source/components/executer/excreate.c b/source/components/executer/excreate.c index c7f945b..9a002b8 100644 --- a/source/components/executer/excreate.c +++ b/source/components/executer/excreate.c @@ -526,6 +526,7 @@ AcpiExCreateMethod ( ObjDesc->Method.AmlStart = AmlStart; ObjDesc->Method.AmlLength = AmlLength; + ObjDesc->Method.Node = Operand[0]; /* * Disassemble the method flags. Split off the ArgCount, Serialized diff --git a/source/components/executer/exdebug.c b/source/components/executer/exdebug.c index 6ca866c..f50d07b 100644 --- a/source/components/executer/exdebug.c +++ b/source/components/executer/exdebug.c @@ -43,13 +43,26 @@ #include "acpi.h" #include "accommon.h" +#include "acnamesp.h" #include "acinterp.h" +#include "acparser.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exdebug") +static ACPI_OPERAND_OBJECT *AcpiGbl_TraceMethodObject = NULL; + +/* Local prototypes */ + +#ifdef ACPI_DEBUG_OUTPUT +static const char * +AcpiExGetTraceEventName ( + ACPI_TRACE_EVENT_TYPE Type); +#endif + + #ifndef ACPI_NO_ERROR_MESSAGES /******************************************************************************* * @@ -314,3 +327,362 @@ AcpiExDoDebugObject ( return_VOID; } #endif + + +/******************************************************************************* + * + * FUNCTION: AcpiExInterpreterTraceEnabled + * + * PARAMETERS: Name - Whether method name should be matched, + * this should be checked before starting + * the tracer + * + * RETURN: TRUE if interpreter trace is enabled. + * + * DESCRIPTION: Check whether interpreter trace is enabled + * + ******************************************************************************/ + +static BOOLEAN +AcpiExInterpreterTraceEnabled ( + char *Name) +{ + + /* Check if tracing is enabled */ + + if (!(AcpiGbl_TraceFlags & ACPI_TRACE_ENABLED)) + { + return (FALSE); + } + + /* + * Check if tracing is filtered: + * + * 1. If the tracer is started, AcpiGbl_TraceMethodObject should have + * been filled by the trace starter + * 2. If the tracer is not started, AcpiGbl_TraceMethodName should be + * matched if it is specified + * 3. If the tracer is oneshot style, AcpiGbl_TraceMethodName should + * not be cleared by the trace stopper during the first match + */ + if (AcpiGbl_TraceMethodObject) + { + return (TRUE); + } + if (Name && + (AcpiGbl_TraceMethodName && + strcmp (AcpiGbl_TraceMethodName, Name))) + { + return (FALSE); + } + if ((AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) && + !AcpiGbl_TraceMethodName) + { + return (FALSE); + } + + return (TRUE); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExGetTraceEventName + * + * PARAMETERS: Type - Trace event type + * + * RETURN: Trace event name. + * + * DESCRIPTION: Used to obtain the full trace event name. + * + ******************************************************************************/ + +#ifdef ACPI_DEBUG_OUTPUT + +static const char * +AcpiExGetTraceEventName ( + ACPI_TRACE_EVENT_TYPE Type) +{ + switch (Type) + { + case ACPI_TRACE_AML_METHOD: + + return "Method"; + + case ACPI_TRACE_AML_OPCODE: + + return "Opcode"; + + case ACPI_TRACE_AML_REGION: + + return "Region"; + + default: + + return ""; + } +} + +#endif + + +/******************************************************************************* + * + * FUNCTION: AcpiExTracePoint + * + * PARAMETERS: Type - Trace event type + * Begin - TRUE if before execution + * Aml - Executed AML address + * Pathname - Object path + * + * RETURN: None + * + * DESCRIPTION: Internal interpreter execution trace. + * + ******************************************************************************/ + +void +AcpiExTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname) +{ + + ACPI_FUNCTION_NAME (ExTracePoint); + + + if (Pathname) + { + ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, + "%s %s [0x%p:%s] execution.\n", + AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", + Aml, Pathname)); + } + else + { + ACPI_DEBUG_PRINT ((ACPI_DB_TRACE_POINT, + "%s %s [0x%p] execution.\n", + AcpiExGetTraceEventName (Type), Begin ? "Begin" : "End", + Aml)); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStartTraceMethod + * + * PARAMETERS: MethodNode - Node of the method + * ObjDesc - The method object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Start control method execution trace + * + ******************************************************************************/ + +void +AcpiExStartTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + char *Pathname = NULL; + BOOLEAN Enabled = FALSE; + + + ACPI_FUNCTION_NAME (ExStartTraceMethod); + + + if (MethodNode) + { + Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto Exit; + } + + Enabled = AcpiExInterpreterTraceEnabled (Pathname); + if (Enabled && !AcpiGbl_TraceMethodObject) + { + AcpiGbl_TraceMethodObject = ObjDesc; + AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; + AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; + AcpiDbgLevel = ACPI_TRACE_LEVEL_ALL; + AcpiDbgLayer = ACPI_TRACE_LAYER_ALL; + + if (AcpiGbl_TraceDbgLevel) + { + AcpiDbgLevel = AcpiGbl_TraceDbgLevel; + } + if (AcpiGbl_TraceDbgLayer) + { + AcpiDbgLayer = AcpiGbl_TraceDbgLayer; + } + } + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + +Exit: + if (Enabled) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, TRUE, + ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); + } + if (Pathname) + { + ACPI_FREE (Pathname); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStopTraceMethod + * + * PARAMETERS: MethodNode - Node of the method + * ObjDesc - The method object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Stop control method execution trace + * + ******************************************************************************/ + +void +AcpiExStopTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + ACPI_STATUS Status; + char *Pathname = NULL; + BOOLEAN Enabled; + + + ACPI_FUNCTION_NAME (ExStopTraceMethod); + + + if (MethodNode) + { + Pathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto ExitPath; + } + + Enabled = AcpiExInterpreterTraceEnabled (NULL); + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + + if (Enabled) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_METHOD, FALSE, + ObjDesc ? ObjDesc->Method.AmlStart : NULL, Pathname); + } + + Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); + if (ACPI_FAILURE (Status)) + { + goto ExitPath; + } + + /* Check whether the tracer should be stopped */ + + if (AcpiGbl_TraceMethodObject == ObjDesc) + { + /* Disable further tracing if type is one-shot */ + + if (AcpiGbl_TraceFlags & ACPI_TRACE_ONESHOT) + { + AcpiGbl_TraceMethodName = NULL; + } + + AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; + AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; + AcpiGbl_TraceMethodObject = NULL; + } + + (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + +ExitPath: + if (Pathname) + { + ACPI_FREE (Pathname); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStartTraceOpcode + * + * PARAMETERS: Op - The parser opcode object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Start opcode execution trace + * + ******************************************************************************/ + +void +AcpiExStartTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + + ACPI_FUNCTION_NAME (ExStartTraceOpcode); + + + if (AcpiExInterpreterTraceEnabled (NULL) && + (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, TRUE, + Op->Common.Aml, Op->Common.AmlOpName); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiExStopTraceOpcode + * + * PARAMETERS: Op - The parser opcode object + * WalkState - current state, NULL if not yet executing + * a method. + * + * RETURN: None + * + * DESCRIPTION: Stop opcode execution trace + * + ******************************************************************************/ + +void +AcpiExStopTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + + ACPI_FUNCTION_NAME (ExStopTraceOpcode); + + + if (AcpiExInterpreterTraceEnabled (NULL) && + (AcpiGbl_TraceFlags & ACPI_TRACE_OPCODE)) + { + ACPI_TRACE_POINT (ACPI_TRACE_AML_OPCODE, FALSE, + Op->Common.Aml, Op->Common.AmlOpName); + } +} diff --git a/source/components/executer/exdump.c b/source/components/executer/exdump.c index 299a1a0..3142e62 100644 --- a/source/components/executer/exdump.c +++ b/source/components/executer/exdump.c @@ -1039,7 +1039,8 @@ AcpiExDumpReferenceObj ( { AcpiOsPrintf (" %p ", ObjDesc->Reference.Node); - Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf); + Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, + &RetBuf, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf (" Could not convert name to pathname\n"); diff --git a/source/components/namespace/nsnames.c b/source/components/namespace/nsnames.c index 22e697b..ea10930 100644 --- a/source/components/namespace/nsnames.c +++ b/source/components/namespace/nsnames.c @@ -53,82 +53,6 @@ /******************************************************************************* * - * FUNCTION: AcpiNsBuildExternalPath - * - * PARAMETERS: Node - NS node whose pathname is needed - * Size - Size of the pathname - * *NameBuffer - Where to return the pathname - * - * RETURN: Status - * Places the pathname into the NameBuffer, in external format - * (name segments separated by path separators) - * - * DESCRIPTION: Generate a full pathaname - * - ******************************************************************************/ - -ACPI_STATUS -AcpiNsBuildExternalPath ( - ACPI_NAMESPACE_NODE *Node, - ACPI_SIZE Size, - char *NameBuffer) -{ - ACPI_SIZE Index; - ACPI_NAMESPACE_NODE *ParentNode; - - - ACPI_FUNCTION_ENTRY (); - - - /* Special case for root */ - - Index = Size - 1; - if (Index < ACPI_NAME_SIZE) - { - NameBuffer[0] = AML_ROOT_PREFIX; - NameBuffer[1] = 0; - return (AE_OK); - } - - /* Store terminator byte, then build name backwards */ - - ParentNode = Node; - NameBuffer[Index] = 0; - - while ((Index > ACPI_NAME_SIZE) && (ParentNode != AcpiGbl_RootNode)) - { - Index -= ACPI_NAME_SIZE; - - /* Put the name into the buffer */ - - ACPI_MOVE_32_TO_32 ((NameBuffer + Index), &ParentNode->Name); - ParentNode = ParentNode->Parent; - - /* Prefix name with the path separator */ - - Index--; - NameBuffer[Index] = ACPI_PATH_SEPARATOR; - } - - /* Overwrite final separator with the root prefix character */ - - NameBuffer[Index] = AML_ROOT_PREFIX; - - if (Index != 0) - { - ACPI_ERROR ((AE_INFO, - "Could not construct external pathname; index=%u, size=%u, Path=%s", - (UINT32) Index, (UINT32) Size, &NameBuffer[Size])); - - return (AE_BAD_PARAMETER); - } - - return (AE_OK); -} - - -/******************************************************************************* - * * FUNCTION: AcpiNsGetExternalPathname * * PARAMETERS: Node - Namespace node whose pathname is needed @@ -146,39 +70,13 @@ char * AcpiNsGetExternalPathname ( ACPI_NAMESPACE_NODE *Node) { - ACPI_STATUS Status; char *NameBuffer; - ACPI_SIZE Size; ACPI_FUNCTION_TRACE_PTR (NsGetExternalPathname, Node); - /* Calculate required buffer size based on depth below root */ - - Size = AcpiNsGetPathnameLength (Node); - if (!Size) - { - return_PTR (NULL); - } - - /* Allocate a buffer to be returned to caller */ - - NameBuffer = ACPI_ALLOCATE_ZEROED (Size); - if (!NameBuffer) - { - ACPI_ERROR ((AE_INFO, "Could not allocate %u bytes", (UINT32) Size)); - return_PTR (NULL); - } - - /* Build the path in the allocated buffer */ - - Status = AcpiNsBuildExternalPath (Node, Size, NameBuffer); - if (ACPI_FAILURE (Status)) - { - ACPI_FREE (NameBuffer); - return_PTR (NULL); - } + NameBuffer = AcpiNsGetNormalizedPathname (Node, FALSE); return_PTR (NameBuffer); } @@ -201,38 +99,14 @@ AcpiNsGetPathnameLength ( ACPI_NAMESPACE_NODE *Node) { ACPI_SIZE Size; - ACPI_NAMESPACE_NODE *NextNode; ACPI_FUNCTION_ENTRY (); - /* - * Compute length of pathname as 5 * number of name segments. - * Go back up the parent tree to the root - */ - Size = 0; - NextNode = Node; + Size = AcpiNsBuildNormalizedPath (Node, NULL, 0, FALSE); - while (NextNode && (NextNode != AcpiGbl_RootNode)) - { - if (ACPI_GET_DESCRIPTOR_TYPE (NextNode) != ACPI_DESC_TYPE_NAMED) - { - ACPI_ERROR ((AE_INFO, - "Invalid Namespace Node (%p) while traversing namespace", - NextNode)); - return (0); - } - Size += ACPI_PATH_SEGMENT_LENGTH; - NextNode = NextNode->Parent; - } - - if (!Size) - { - Size = 1; /* Root node case */ - } - - return (Size + 1); /* +1 for null string terminator */ + return (Size); } @@ -243,6 +117,8 @@ AcpiNsGetPathnameLength ( * PARAMETERS: TargetHandle - Handle of named object whose name is * to be found * Buffer - Where the pathname is returned + * NoTrailing - Remove trailing '_' for each name + * segment * * RETURN: Status, Buffer is filled with pathname if status is AE_OK * @@ -253,7 +129,8 @@ AcpiNsGetPathnameLength ( ACPI_STATUS AcpiNsHandleToPathname ( ACPI_HANDLE TargetHandle, - ACPI_BUFFER *Buffer) + ACPI_BUFFER *Buffer, + BOOLEAN NoTrailing) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; @@ -271,7 +148,7 @@ AcpiNsHandleToPathname ( /* Determine size required for the caller buffer */ - RequiredSize = AcpiNsGetPathnameLength (Node); + RequiredSize = AcpiNsBuildNormalizedPath (Node, NULL, 0, NoTrailing); if (!RequiredSize) { return_ACPI_STATUS (AE_BAD_PARAMETER); @@ -287,7 +164,8 @@ AcpiNsHandleToPathname ( /* Build the path in the caller buffer */ - Status = AcpiNsBuildExternalPath (Node, RequiredSize, Buffer->Pointer); + (void) AcpiNsBuildNormalizedPath (Node, Buffer->Pointer, + RequiredSize, NoTrailing); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); @@ -297,3 +175,169 @@ AcpiNsHandleToPathname ( (char *) Buffer->Pointer, (UINT32) RequiredSize)); return_ACPI_STATUS (AE_OK); } + + +/******************************************************************************* + * + * FUNCTION: AcpiNsBuildNormalizedPath + * + * PARAMETERS: Node - Namespace node + * FullPath - Where the path name is returned + * PathSize - Size of returned path name buffer + * NoTrailing - Remove trailing '_' from each name segment + * + * RETURN: Return 1 if the AML path is empty, otherwise returning (length + * of pathname + 1) which means the 'FullPath' contains a trailing + * null. + * + * DESCRIPTION: Build and return a full namespace pathname. + * Note that if the size of 'FullPath' isn't large enough to + * contain the namespace node's path name, the actual required + * buffer length is returned, and it should be greater than + * 'PathSize'. So callers are able to check the returning value + * to determine the buffer size of 'FullPath'. + * + ******************************************************************************/ + +UINT32 +AcpiNsBuildNormalizedPath ( + ACPI_NAMESPACE_NODE *Node, + char *FullPath, + UINT32 PathSize, + BOOLEAN NoTrailing) +{ + UINT32 Length = 0, i; + char Name[ACPI_NAME_SIZE]; + BOOLEAN DoNoTrailing; + char c, *Left, *Right; + ACPI_NAMESPACE_NODE *NextNode; + + + ACPI_FUNCTION_TRACE_PTR (NsBuildNormalizedPath, Node); + + +#define ACPI_PATH_PUT8(Path, Size, Byte, Length) \ + do { \ + if ((Length) < (Size)) \ + { \ + (Path)[(Length)] = (Byte); \ + } \ + (Length)++; \ + } while (0) + + /* + * Make sure the PathSize is correct, so that we don't need to + * validate both FullPath and PathSize. + */ + if (!FullPath) + { + PathSize = 0; + } + + if (!Node) + { + goto BuildTrailingNull; + } + + NextNode = Node; + while (NextNode && NextNode != AcpiGbl_RootNode) + { + if (NextNode != Node) + { + ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); + } + ACPI_MOVE_32_TO_32 (Name, &NextNode->Name); + DoNoTrailing = NoTrailing; + for (i = 0; i < 4; i++) + { + c = Name[4-i-1]; + if (DoNoTrailing && c != '_') + { + DoNoTrailing = FALSE; + } + if (!DoNoTrailing) + { + ACPI_PATH_PUT8(FullPath, PathSize, c, Length); + } + } + NextNode = NextNode->Parent; + } + ACPI_PATH_PUT8(FullPath, PathSize, AML_ROOT_PREFIX, Length); + + /* Reverse the path string */ + + if (Length <= PathSize) + { + Left = FullPath; + Right = FullPath+Length-1; + while (Left < Right) + { + c = *Left; + *Left++ = *Right; + *Right-- = c; + } + } + + /* Append the trailing null */ + +BuildTrailingNull: + ACPI_PATH_PUT8(FullPath, PathSize, '\0', Length); + +#undef ACPI_PATH_PUT8 + + return_UINT32 (Length); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiNsGetNormalizedPathname + * + * PARAMETERS: Node - Namespace node whose pathname is needed + * NoTrailing - Remove trailing '_' from each name segment + * + * RETURN: Pointer to storage containing the fully qualified name of + * the node, In external format (name segments separated by path + * separators.) + * + * DESCRIPTION: Used to obtain the full pathname to a namespace node, usually + * for error and debug statements. All trailing '_' will be + * removed from the full pathname if 'NoTrailing' is specified.. + * + ******************************************************************************/ + +char * +AcpiNsGetNormalizedPathname ( + ACPI_NAMESPACE_NODE *Node, + BOOLEAN NoTrailing) +{ + char *NameBuffer; + ACPI_SIZE Size; + + + ACPI_FUNCTION_TRACE_PTR (NsGetNormalizedPathname, Node); + + + /* Calculate required buffer size based on depth below root */ + + Size = AcpiNsBuildNormalizedPath (Node, NULL, 0, NoTrailing); + if (!Size) + { + return_PTR (NULL); + } + + /* Allocate a buffer to be returned to caller */ + + NameBuffer = ACPI_ALLOCATE_ZEROED (Size); + if (!NameBuffer) + { + ACPI_ERROR ((AE_INFO, "Could not allocate %u bytes", (UINT32) Size)); + return_PTR (NULL); + } + + /* Build the path in the allocated buffer */ + + (void) AcpiNsBuildNormalizedPath (Node, NameBuffer, Size, NoTrailing); + + return_PTR (NameBuffer); +} diff --git a/source/components/namespace/nsparse.c b/source/components/namespace/nsparse.c index bfc5615..996db01 100644 --- a/source/components/namespace/nsparse.c +++ b/source/components/namespace/nsparse.c @@ -84,6 +84,22 @@ AcpiNsOneCompleteParse ( ACPI_FUNCTION_TRACE (NsOneCompleteParse); + Status = AcpiGetTableByIndex (TableIndex, &Table); + if (ACPI_FAILURE (Status)) + { + return_ACPI_STATUS (Status); + } + + /* Table must consist of at least a complete header */ + + if (Table->Length < sizeof (ACPI_TABLE_HEADER)) + { + return_ACPI_STATUS (AE_BAD_HEADER); + } + + AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER); + AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); + Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); if (ACPI_FAILURE (Status)) { @@ -92,7 +108,7 @@ AcpiNsOneCompleteParse ( /* Create and init a Root Node */ - ParseRoot = AcpiPsCreateScopeOp (); + ParseRoot = AcpiPsCreateScopeOp (AmlStart); if (!ParseRoot) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -107,26 +123,12 @@ AcpiNsOneCompleteParse ( return_ACPI_STATUS (AE_NO_MEMORY); } - Status = AcpiGetTableByIndex (TableIndex, &Table); + Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, + AmlStart, AmlLength, NULL, (UINT8) PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); - AcpiPsFreeOp (ParseRoot); - return_ACPI_STATUS (Status); - } - - /* Table must consist of at least a complete header */ - - if (Table->Length < sizeof (ACPI_TABLE_HEADER)) - { - Status = AE_BAD_HEADER; - } - else - { - AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER); - AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); - Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, - AmlStart, AmlLength, NULL, (UINT8) PassNumber); + goto Cleanup; } /* Found OSDT table, enable the namespace override feature */ @@ -137,12 +139,6 @@ AcpiNsOneCompleteParse ( WalkState->NamespaceOverride = TRUE; } - if (ACPI_FAILURE (Status)) - { - AcpiDsDeleteWalkState (WalkState); - goto Cleanup; - } - /* StartNode is the default location to load the table */ if (StartNode && StartNode != AcpiGbl_RootNode) diff --git a/source/components/namespace/nsutils.c b/source/components/namespace/nsutils.c index 5335810..83d75d0 100644 --- a/source/components/namespace/nsutils.c +++ b/source/components/namespace/nsutils.c @@ -90,7 +90,7 @@ AcpiNsPrintNodePathname ( Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (Node, &Buffer); + Status = AcpiNsHandleToPathname (Node, &Buffer, FALSE); if (ACPI_SUCCESS (Status)) { if (Message) diff --git a/source/components/namespace/nsxfname.c b/source/components/namespace/nsxfname.c index 7f92201..311431b 100644 --- a/source/components/namespace/nsxfname.c +++ b/source/components/namespace/nsxfname.c @@ -193,11 +193,13 @@ AcpiGetName ( return (Status); } - if (NameType == ACPI_FULL_PATHNAME) + if (NameType == ACPI_FULL_PATHNAME || + NameType == ACPI_FULL_PATHNAME_NO_TRAILING) { /* Get the full pathname (From the namespace root) */ - Status = AcpiNsHandleToPathname (Handle, Buffer); + Status = AcpiNsHandleToPathname (Handle, Buffer, + NameType == ACPI_FULL_PATHNAME ? FALSE : TRUE); return (Status); } diff --git a/source/components/parser/psargs.c b/source/components/parser/psargs.c index ae68073..538b73e 100644 --- a/source/components/parser/psargs.c +++ b/source/components/parser/psargs.c @@ -316,7 +316,7 @@ AcpiPsGetNextNamepath ( ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Desc %p Path=%p\n", Node, MethodDesc, Path)); - NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); + NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP, Start); if (!NameOp) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -524,7 +524,7 @@ static ACPI_PARSE_OBJECT * AcpiPsGetNextField ( ACPI_PARSE_STATE *ParserState) { - UINT32 AmlOffset; + UINT8 *Aml; ACPI_PARSE_OBJECT *Field; ACPI_PARSE_OBJECT *Arg = NULL; UINT16 Opcode; @@ -540,8 +540,7 @@ AcpiPsGetNextField ( ACPI_FUNCTION_TRACE (PsGetNextField); - AmlOffset = (UINT32) ACPI_PTR_DIFF ( - ParserState->Aml, ParserState->AmlStart); + Aml = ParserState->Aml; /* Determine field type */ @@ -579,14 +578,12 @@ AcpiPsGetNextField ( /* Allocate a new field op */ - Field = AcpiPsAllocOp (Opcode); + Field = AcpiPsAllocOp (Opcode, Aml); if (!Field) { return_PTR (NULL); } - Field->Common.AmlOffset = AmlOffset; - /* Decode the field type */ switch (Opcode) @@ -650,6 +647,7 @@ AcpiPsGetNextField ( * Argument for Connection operator can be either a Buffer * (resource descriptor), or a NameString. */ + Aml = ParserState->Aml; if (ACPI_GET8 (ParserState->Aml) == AML_BUFFER_OP) { ParserState->Aml++; @@ -662,7 +660,7 @@ AcpiPsGetNextField ( { /* Non-empty list */ - Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); + Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP, Aml); if (!Arg) { AcpiPsFreeOp (Field); @@ -712,7 +710,7 @@ AcpiPsGetNextField ( } else { - Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); + Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP, Aml); if (!Arg) { AcpiPsFreeOp (Field); @@ -784,7 +782,7 @@ AcpiPsGetNextArg ( /* Constants, strings, and namestrings are all the same size */ - Arg = AcpiPsAllocOp (AML_BYTE_OP); + Arg = AcpiPsAllocOp (AML_BYTE_OP, ParserState->Aml); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -836,7 +834,8 @@ AcpiPsGetNextArg ( { /* Non-empty list */ - Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); + Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP, + ParserState->Aml); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); @@ -866,7 +865,7 @@ AcpiPsGetNextArg ( { /* NullName or NameString */ - Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); + Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP, ParserState->Aml); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/source/components/parser/psloop.c b/source/components/parser/psloop.c index 4e1eb29..7c07944 100644 --- a/source/components/parser/psloop.c +++ b/source/components/parser/psloop.c @@ -51,6 +51,7 @@ #include "acpi.h" #include "accommon.h" +#include "acinterp.h" #include "acparser.h" #include "acdispat.h" #include "amlcode.h" @@ -134,8 +135,7 @@ AcpiPsGetArguments ( */ while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) { - WalkState->AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->ParserState.Aml, - WalkState->ParserState.AmlStart); + WalkState->Aml = WalkState->ParserState.Aml; Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); @@ -146,7 +146,6 @@ AcpiPsGetArguments ( if (Arg) { - Arg->Common.AmlOffset = WalkState->AmlOffset; AcpiPsAppendArg (Op, Arg); } @@ -502,15 +501,7 @@ AcpiPsParseLoop ( continue; } - Op->Common.AmlOffset = WalkState->AmlOffset; - - if (WalkState->OpInfo) - { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n", - (UINT32) Op->Common.AmlOpcode, WalkState->OpInfo->Name, - Op, ParserState->Aml, Op->Common.AmlOffset)); - } + AcpiExStartTraceOpcode (Op, WalkState); } diff --git a/source/components/parser/psobject.c b/source/components/parser/psobject.c index ed65495..b9d8e8c 100644 --- a/source/components/parser/psobject.c +++ b/source/components/parser/psobject.c @@ -73,12 +73,13 @@ static ACPI_STATUS AcpiPsGetAmlOpcode ( ACPI_WALK_STATE *WalkState) { + UINT32 AmlOffset; + ACPI_FUNCTION_TRACE_PTR (PsGetAmlOpcode, WalkState); - WalkState->AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->ParserState.Aml, - WalkState->ParserState.AmlStart); + WalkState->Aml = WalkState->ParserState.Aml; WalkState->Opcode = AcpiPsPeekOpcode (&(WalkState->ParserState)); /* @@ -107,10 +108,13 @@ AcpiPsGetAmlOpcode ( if (WalkState->PassNumber == 2) { + AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->Aml, + WalkState->ParserState.AmlStart); + ACPI_ERROR ((AE_INFO, "Unknown opcode 0x%.2X at table offset 0x%.4X, ignoring", WalkState->Opcode, - (UINT32) (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER)))); + (UINT32) (AmlOffset + sizeof (ACPI_TABLE_HEADER)))); ACPI_DUMP_BUFFER ((WalkState->ParserState.Aml - 16), 48); @@ -122,13 +126,13 @@ AcpiPsGetAmlOpcode ( AcpiOsPrintf ( "/*\nError: Unknown opcode 0x%.2X at table offset 0x%.4X, context:\n", WalkState->Opcode, - (UINT32) (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER))); + (UINT32) (AmlOffset + sizeof (ACPI_TABLE_HEADER))); /* Dump the context surrounding the invalid opcode */ AcpiUtDumpBuffer (((UINT8 *) WalkState->ParserState.Aml - 16), 48, DB_BYTE_DISPLAY, - (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER) - 16)); + (AmlOffset + sizeof (ACPI_TABLE_HEADER) - 16)); AcpiOsPrintf (" */\n"); #endif } @@ -313,7 +317,7 @@ AcpiPsCreateOp ( /* Create Op structure and append to parent's argument list */ WalkState->OpInfo = AcpiPsGetOpcodeInfo (WalkState->Opcode); - Op = AcpiPsAllocOp (WalkState->Opcode); + Op = AcpiPsAllocOp (WalkState->Opcode, AmlOpStart); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); diff --git a/source/components/parser/psparse.c b/source/components/parser/psparse.c index 39520db..49ab631 100644 --- a/source/components/parser/psparse.c +++ b/source/components/parser/psparse.c @@ -161,6 +161,8 @@ AcpiPsCompleteThisOp ( return_ACPI_STATUS (AE_OK); /* OK for now */ } + AcpiExStopTraceOpcode (Op, WalkState); + /* Delete this op and the subtree below it if asked to */ if (((WalkState->ParseFlags & ACPI_PARSE_TREE_MASK) != ACPI_PARSE_DELETE_TREE) || @@ -198,7 +200,8 @@ AcpiPsCompleteThisOp ( * These opcodes contain TermArg operands. The current * op must be replaced by a placeholder return op */ - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -217,7 +220,8 @@ AcpiPsCompleteThisOp ( (Op->Common.Parent->Common.AmlOpcode == AML_BANK_FIELD_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -230,7 +234,8 @@ AcpiPsCompleteThisOp ( (Op->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { - ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode); + ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; @@ -246,7 +251,8 @@ AcpiPsCompleteThisOp ( default: - ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); + ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP, + Op->Common.Aml); if (!ReplacementOp) { Status = AE_NO_MEMORY; diff --git a/source/components/parser/psutils.c b/source/components/parser/psutils.c index 55bf2cc..ec0d20c 100644 --- a/source/components/parser/psutils.c +++ b/source/components/parser/psutils.c @@ -64,12 +64,12 @@ ACPI_PARSE_OBJECT * AcpiPsCreateScopeOp ( - void) + UINT8 *Aml) { ACPI_PARSE_OBJECT *ScopeOp; - ScopeOp = AcpiPsAllocOp (AML_SCOPE_OP); + ScopeOp = AcpiPsAllocOp (AML_SCOPE_OP, Aml); if (!ScopeOp) { return (NULL); @@ -115,6 +115,7 @@ AcpiPsInitOp ( * FUNCTION: AcpiPsAllocOp * * PARAMETERS: Opcode - Opcode that will be stored in the new Op + * Aml - Address of the opcode * * RETURN: Pointer to the new Op, null on failure * @@ -126,7 +127,8 @@ AcpiPsInitOp ( ACPI_PARSE_OBJECT* AcpiPsAllocOp ( - UINT16 Opcode) + UINT16 Opcode, + UINT8 *Aml) { ACPI_PARSE_OBJECT *Op; const ACPI_OPCODE_INFO *OpInfo; @@ -173,6 +175,7 @@ AcpiPsAllocOp ( if (Op) { AcpiPsInitOp (Op, Opcode); + Op->Common.Aml = Aml; Op->Common.Flags = Flags; } diff --git a/source/components/parser/psxface.c b/source/components/parser/psxface.c index 85eea33..ae072b7 100644 --- a/source/components/parser/psxface.c +++ b/source/components/parser/psxface.c @@ -47,6 +47,7 @@ #include "acdispat.h" #include "acinterp.h" #include "actables.h" +#include "acnamesp.h" #define _COMPONENT ACPI_PARSER @@ -55,14 +56,6 @@ /* Local Prototypes */ static void -AcpiPsStartTrace ( - ACPI_EVALUATE_INFO *Info); - -static void -AcpiPsStopTrace ( - ACPI_EVALUATE_INFO *Info); - -static void AcpiPsUpdateParameterList ( ACPI_EVALUATE_INFO *Info, UINT16 Action); @@ -86,7 +79,7 @@ AcpiPsUpdateParameterList ( ACPI_STATUS AcpiDebugTrace ( - char *Name, + const char *Name, UINT32 DebugLevel, UINT32 DebugLayer, UINT32 Flags) @@ -100,128 +93,14 @@ AcpiDebugTrace ( return (Status); } - /* TBDs: Validate name, allow full path or just nameseg */ - - AcpiGbl_TraceMethodName = *ACPI_CAST_PTR (UINT32, Name); + AcpiGbl_TraceMethodName = Name; AcpiGbl_TraceFlags = Flags; - - if (DebugLevel) - { - AcpiGbl_TraceDbgLevel = DebugLevel; - } - if (DebugLayer) - { - AcpiGbl_TraceDbgLayer = DebugLayer; - } + AcpiGbl_TraceDbgLevel = DebugLevel; + AcpiGbl_TraceDbgLayer = DebugLayer; + Status = AE_OK; (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); - return (AE_OK); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsStartTrace - * - * PARAMETERS: Info - Method info struct - * - * RETURN: None - * - * DESCRIPTION: Start control method execution trace - * - ******************************************************************************/ - -static void -AcpiPsStartTrace ( - ACPI_EVALUATE_INFO *Info) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return; - } - - if ((!AcpiGbl_TraceMethodName) || - (AcpiGbl_TraceMethodName != Info->Node->Name.Integer)) - { - goto Exit; - } - - AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; - AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; - - AcpiDbgLevel = 0x00FFFFFF; - AcpiDbgLayer = ACPI_UINT32_MAX; - - if (AcpiGbl_TraceDbgLevel) - { - AcpiDbgLevel = AcpiGbl_TraceDbgLevel; - } - if (AcpiGbl_TraceDbgLayer) - { - AcpiDbgLayer = AcpiGbl_TraceDbgLayer; - } - - -Exit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); -} - - -/******************************************************************************* - * - * FUNCTION: AcpiPsStopTrace - * - * PARAMETERS: Info - Method info struct - * - * RETURN: None - * - * DESCRIPTION: Stop control method execution trace - * - ******************************************************************************/ - -static void -AcpiPsStopTrace ( - ACPI_EVALUATE_INFO *Info) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_ENTRY (); - - - Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); - if (ACPI_FAILURE (Status)) - { - return; - } - - if ((!AcpiGbl_TraceMethodName) || - (AcpiGbl_TraceMethodName != Info->Node->Name.Integer)) - { - goto Exit; - } - - /* Disable further tracing if type is one-shot */ - - if (AcpiGbl_TraceFlags & 1) - { - AcpiGbl_TraceMethodName = 0; - AcpiGbl_TraceDbgLevel = 0; - AcpiGbl_TraceDbgLayer = 0; - } - - AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; - AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; - -Exit: - (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); + return (Status); } @@ -284,10 +163,6 @@ AcpiPsExecuteMethod ( */ AcpiPsUpdateParameterList (Info, REF_INCREMENT); - /* Begin tracing if requested */ - - AcpiPsStartTrace (Info); - /* * Execute the method. Performs parse simultaneously */ @@ -297,7 +172,7 @@ AcpiPsExecuteMethod ( /* Create and init a Root Node */ - Op = AcpiPsCreateScopeOp (); + Op = AcpiPsCreateScopeOp (Info->ObjDesc->Method.AmlStart); if (!Op) { Status = AE_NO_MEMORY; @@ -370,10 +245,6 @@ AcpiPsExecuteMethod ( Cleanup: AcpiPsDeleteParseTree (Op); - /* End optional tracing */ - - AcpiPsStopTrace (Info); - /* Take away the extra reference that we gave the parameters above */ AcpiPsUpdateParameterList (Info, REF_DECREMENT); diff --git a/source/components/resources/rscreate.c b/source/components/resources/rscreate.c index 551f59a..926d79b 100644 --- a/source/components/resources/rscreate.c +++ b/source/components/resources/rscreate.c @@ -370,7 +370,8 @@ AcpiRsCreatePciRoutingTable ( (UINT8 *) OutputBuffer->Pointer); PathBuffer.Pointer = UserPrt->Source; - Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer); + Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, + &PathBuffer, FALSE); /* +1 to include null terminator */ diff --git a/source/components/utilities/utclib.c b/source/components/utilities/utclib.c index a93ed86..76956d6 100644 --- a/source/components/utilities/utclib.c +++ b/source/components/utilities/utclib.c @@ -93,9 +93,6 @@ #ifndef ACPI_USE_SYSTEM_CLIBRARY /* Entire module */ -#define NEGATIVE 1 -#define POSITIVE 0 - /******************************************************************************* * @@ -584,17 +581,17 @@ strtoul ( */ if (*String == '-') { - sign = NEGATIVE; + sign = ACPI_SIGN_NEGATIVE; ++String; } else if (*String == '+') { ++String; - sign = POSITIVE; + sign = ACPI_SIGN_POSITIVE; } else { - sign = POSITIVE; + sign = ACPI_SIGN_POSITIVE; } /* @@ -717,7 +714,7 @@ done: /* * If a minus sign was present, then "the conversion is negated": */ - if (sign == NEGATIVE) + if (sign == ACPI_SIGN_NEGATIVE) { ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; } diff --git a/source/components/utilities/utdebug.c b/source/components/utilities/utdebug.c index 2aefacb..d88692a 100644 --- a/source/components/utilities/utdebug.c +++ b/source/components/utilities/utdebug.c @@ -45,6 +45,7 @@ #include "acpi.h" #include "accommon.h" +#include "acinterp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utdebug") @@ -634,6 +635,42 @@ AcpiUtPtrExit ( } } + +/******************************************************************************* + * + * FUNCTION: AcpiTracePoint + * + * PARAMETERS: Type - Trace event type + * Begin - TRUE if before execution + * Aml - Executed AML address + * Pathname - Object path + * Pointer - Pointer to the related object + * + * RETURN: None + * + * DESCRIPTION: Interpreter execution trace. + * + ******************************************************************************/ + +void +AcpiTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname) +{ + + ACPI_FUNCTION_ENTRY (); + + AcpiExTracePoint (Type, Begin, Aml, Pathname); + +#ifdef ACPI_USE_SYSTEM_TRACER + AcpiOsTracePoint (Type, Begin, Aml, Pathname); +#endif +} + +ACPI_EXPORT_SYMBOL (AcpiTracePoint) + #endif diff --git a/source/components/utilities/utdelete.c b/source/components/utilities/utdelete.c index 264b45d..17ccacb 100644 --- a/source/components/utilities/utdelete.c +++ b/source/components/utilities/utdelete.c @@ -220,6 +220,10 @@ AcpiUtDeleteInternalObj ( AcpiUtDeleteObjectDesc (Object->Method.Mutex); Object->Method.Mutex = NULL; } + if (Object->Method.Node) + { + Object->Method.Node = NULL; + } break; case ACPI_TYPE_REGION: diff --git a/source/components/utilities/utinit.c b/source/components/utilities/utinit.c index d69599d..5ac47be 100644 --- a/source/components/utilities/utinit.c +++ b/source/components/utilities/utinit.c @@ -224,8 +224,6 @@ AcpiUtInitGlobals ( AcpiGbl_AcpiHardwarePresent = TRUE; AcpiGbl_LastOwnerIdIndex = 0; AcpiGbl_NextOwnerIdOffset = 0; - AcpiGbl_TraceDbgLevel = 0; - AcpiGbl_TraceDbgLayer = 0; AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; AcpiGbl_OsiMutex = NULL; AcpiGbl_RegMethodsExecuted = FALSE; diff --git a/source/components/utilities/utmisc.c b/source/components/utilities/utmisc.c index 8ac133a..a171aef 100644 --- a/source/components/utilities/utmisc.c +++ b/source/components/utilities/utmisc.c @@ -418,7 +418,7 @@ AcpiUtDisplayInitPathname ( /* Get the full pathname to the node */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; - Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); + Status = AcpiNsHandleToPathname (ObjHandle, &Buffer, FALSE); if (ACPI_FAILURE (Status)) { return; diff --git a/source/components/utilities/utnonansi.c b/source/components/utilities/utnonansi.c new file mode 100644 index 0000000..3c64eaa --- /dev/null +++ b/source/components/utilities/utnonansi.c @@ -0,0 +1,453 @@ +/******************************************************************************* + * + * Module Name: utnonansi - Non-ansi C library functions + * + ******************************************************************************/ + +/* + * Copyright (C) 2000 - 2015, Intel Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + +#include "acpi.h" +#include "accommon.h" + + +#define _COMPONENT ACPI_UTILITIES + ACPI_MODULE_NAME ("utnonansi") + + +/* + * Non-ANSI C library functions - strlwr, strupr, stricmp, and a 64-bit + * version of strtoul. + */ + +/******************************************************************************* + * + * FUNCTION: AcpiUtStrlwr (strlwr) + * + * PARAMETERS: SrcString - The source string to convert + * + * RETURN: None + * + * DESCRIPTION: Convert a string to lowercase + * + ******************************************************************************/ + +void +AcpiUtStrlwr ( + char *SrcString) +{ + char *String; + + + ACPI_FUNCTION_ENTRY (); + + + if (!SrcString) + { + return; + } + + /* Walk entire string, lowercasing the letters */ + + for (String = SrcString; *String; String++) + { + *String = (char) tolower ((int) *String); + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtStrupr (strupr) + * + * PARAMETERS: SrcString - The source string to convert + * + * RETURN: None + * + * DESCRIPTION: Convert a string to uppercase + * + ******************************************************************************/ + +void +AcpiUtStrupr ( + char *SrcString) +{ + char *String; + + + ACPI_FUNCTION_ENTRY (); + + + if (!SrcString) + { + return; + } + + /* Walk entire string, uppercasing the letters */ + + for (String = SrcString; *String; String++) + { + *String = (char) toupper ((int) *String); + } +} + + +/****************************************************************************** + * + * FUNCTION: AcpiUtStricmp (stricmp) + * + * PARAMETERS: String1 - first string to compare + * String2 - second string to compare + * + * RETURN: int that signifies string relationship. Zero means strings + * are equal. + * + * DESCRIPTION: Case-insensitive string compare. Implementation of the + * non-ANSI stricmp function. + * + ******************************************************************************/ + +int +AcpiUtStricmp ( + char *String1, + char *String2) +{ + int c1; + int c2; + + + do + { + c1 = tolower ((int) *String1); + c2 = tolower ((int) *String2); + + String1++; + String2++; + } + while ((c1 == c2) && (c1)); + + return (c1 - c2); +} + + +/******************************************************************************* + * + * FUNCTION: AcpiUtStrtoul64 + * + * PARAMETERS: String - Null terminated string + * Base - Radix of the string: 16 or ACPI_ANY_BASE; + * ACPI_ANY_BASE means 'in behalf of ToInteger' + * RetInteger - Where the converted integer is returned + * + * RETURN: Status and Converted value + * + * DESCRIPTION: Convert a string into an unsigned value. Performs either a + * 32-bit or 64-bit conversion, depending on the current mode + * of the interpreter. + * + * NOTE: Does not support Octal strings, not needed. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtStrtoul64 ( + char *String, + UINT32 Base, + UINT64 *RetInteger) +{ + UINT32 ThisDigit = 0; + UINT64 ReturnValue = 0; + UINT64 Quotient; + UINT64 Dividend; + UINT32 ToIntegerOp = (Base == ACPI_ANY_BASE); + UINT32 Mode32 = (AcpiGbl_IntegerByteWidth == 4); + UINT8 ValidDigits = 0; + UINT8 SignOf0x = 0; + UINT8 Term = 0; + + + ACPI_FUNCTION_TRACE_STR (UtStroul64, String); + + + switch (Base) + { + case ACPI_ANY_BASE: + case 16: + + break; + + default: + + /* Invalid Base */ + + return_ACPI_STATUS (AE_BAD_PARAMETER); + } + + if (!String) + { + goto ErrorExit; + } + + /* Skip over any white space in the buffer */ + + while ((*String) && (isspace ((int) *String) || *String == '\t')) + { + String++; + } + + if (ToIntegerOp) + { + /* + * Base equal to ACPI_ANY_BASE means 'ToInteger operation case'. + * We need to determine if it is decimal or hexadecimal. + */ + if ((*String == '0') && (tolower ((int) *(String + 1)) == 'x')) + { + SignOf0x = 1; + Base = 16; + + /* Skip over the leading '0x' */ + String += 2; + } + else + { + Base = 10; + } + } + + /* Any string left? Check that '0x' is not followed by white space. */ + + if (!(*String) || isspace ((int) *String) || *String == '\t') + { + if (ToIntegerOp) + { + goto ErrorExit; + } + else + { + goto AllDone; + } + } + + /* + * Perform a 32-bit or 64-bit conversion, depending upon the current + * execution mode of the interpreter + */ + Dividend = (Mode32) ? ACPI_UINT32_MAX : ACPI_UINT64_MAX; + + /* Main loop: convert the string to a 32- or 64-bit integer */ + + while (*String) + { + if (isdigit ((int) *String)) + { + /* Convert ASCII 0-9 to Decimal value */ + + ThisDigit = ((UINT8) *String) - '0'; + } + else if (Base == 10) + { + /* Digit is out of range; possible in ToInteger case only */ + + Term = 1; + } + else + { + ThisDigit = (UINT8) toupper ((int) *String); + if (isxdigit ((int) ThisDigit)) + { + /* Convert ASCII Hex char to value */ + + ThisDigit = ThisDigit - 'A' + 10; + } + else + { + Term = 1; + } + } + + if (Term) + { + if (ToIntegerOp) + { + goto ErrorExit; + } + else + { + break; + } + } + else if ((ValidDigits == 0) && (ThisDigit == 0) && !SignOf0x) + { + /* Skip zeros */ + String++; + continue; + } + + ValidDigits++; + + if (SignOf0x && ((ValidDigits > 16) || ((ValidDigits > 8) && Mode32))) + { + /* + * This is ToInteger operation case. + * No any restrictions for string-to-integer conversion, + * see ACPI spec. + */ + goto ErrorExit; + } + + /* Divide the digit into the correct position */ + + (void) AcpiUtShortDivide ((Dividend - (UINT64) ThisDigit), + Base, &Quotient, NULL); + + if (ReturnValue > Quotient) + { + if (ToIntegerOp) + { + goto ErrorExit; + } + else + { + break; + } + } + + ReturnValue *= Base; + ReturnValue += ThisDigit; + String++; + } + + /* All done, normal exit */ + +AllDone: + + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Converted value: %8.8X%8.8X\n", + ACPI_FORMAT_UINT64 (ReturnValue))); + + *RetInteger = ReturnValue; + return_ACPI_STATUS (AE_OK); + + +ErrorExit: + /* Base was set/validated above */ + + if (Base == 10) + { + return_ACPI_STATUS (AE_BAD_DECIMAL_CONSTANT); + } + else + { + return_ACPI_STATUS (AE_BAD_HEX_CONSTANT); + } +} + + +#if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) +/******************************************************************************* + * + * FUNCTION: AcpiUtSafeStrcpy, AcpiUtSafeStrcat, AcpiUtSafeStrncat + * + * PARAMETERS: Adds a "DestSize" parameter to each of the standard string + * functions. This is the size of the Destination buffer. + * + * RETURN: TRUE if the operation would overflow the destination buffer. + * + * DESCRIPTION: Safe versions of standard Clib string functions. Ensure that + * the result of the operation will not overflow the output string + * buffer. + * + * NOTE: These functions are typically only helpful for processing + * user input and command lines. For most ACPICA code, the + * required buffer length is precisely calculated before buffer + * allocation, so the use of these functions is unnecessary. + * + ******************************************************************************/ + +BOOLEAN +AcpiUtSafeStrcpy ( + char *Dest, + ACPI_SIZE DestSize, + char *Source) +{ + + if (strlen (Source) >= DestSize) + { + return (TRUE); + } + + strcpy (Dest, Source); + return (FALSE); +} + +BOOLEAN +AcpiUtSafeStrcat ( + char *Dest, + ACPI_SIZE DestSize, + char *Source) +{ + + if ((strlen (Dest) + strlen (Source)) >= DestSize) + { + return (TRUE); + } + + strcat (Dest, Source); + return (FALSE); +} + +BOOLEAN +AcpiUtSafeStrncat ( + char *Dest, + ACPI_SIZE DestSize, + char *Source, + ACPI_SIZE MaxTransferLength) +{ + ACPI_SIZE ActualTransferLength; + + + ActualTransferLength = ACPI_MIN (MaxTransferLength, strlen (Source)); + + if ((strlen (Dest) + ActualTransferLength) >= DestSize) + { + return (TRUE); + } + + strncat (Dest, Source, MaxTransferLength); + return (FALSE); +} +#endif diff --git a/source/components/utilities/utstring.c b/source/components/utilities/utstring.c index 33060f0..af7b4af 100644 --- a/source/components/utilities/utstring.c +++ b/source/components/utilities/utstring.c @@ -50,343 +50,6 @@ ACPI_MODULE_NAME ("utstring") -/* - * Non-ANSI C library functions - strlwr, strupr, stricmp, and a 64-bit - * version of strtoul. - */ - -#ifdef ACPI_ASL_COMPILER -/******************************************************************************* - * - * FUNCTION: AcpiUtStrlwr (strlwr) - * - * PARAMETERS: SrcString - The source string to convert - * - * RETURN: None - * - * DESCRIPTION: Convert string to lowercase - * - * NOTE: This is not a POSIX function, so it appears here, not in utclib.c - * - ******************************************************************************/ - -void -AcpiUtStrlwr ( - char *SrcString) -{ - char *String; - - - ACPI_FUNCTION_ENTRY (); - - - if (!SrcString) - { - return; - } - - /* Walk entire string, lowercasing the letters */ - - for (String = SrcString; *String; String++) - { - *String = (char) tolower ((int) *String); - } - - return; -} - - -/****************************************************************************** - * - * FUNCTION: AcpiUtStricmp (stricmp) - * - * PARAMETERS: String1 - first string to compare - * String2 - second string to compare - * - * RETURN: int that signifies string relationship. Zero means strings - * are equal. - * - * DESCRIPTION: Implementation of the non-ANSI stricmp function (compare - * strings with no case sensitivity) - * - ******************************************************************************/ - -int -AcpiUtStricmp ( - char *String1, - char *String2) -{ - int c1; - int c2; - - - do - { - c1 = tolower ((int) *String1); - c2 = tolower ((int) *String2); - - String1++; - String2++; - } - while ((c1 == c2) && (c1)); - - return (c1 - c2); -} -#endif - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrupr (strupr) - * - * PARAMETERS: SrcString - The source string to convert - * - * RETURN: None - * - * DESCRIPTION: Convert string to uppercase - * - * NOTE: This is not a POSIX function, so it appears here, not in utclib.c - * - ******************************************************************************/ - -void -AcpiUtStrupr ( - char *SrcString) -{ - char *String; - - - ACPI_FUNCTION_ENTRY (); - - - if (!SrcString) - { - return; - } - - /* Walk entire string, uppercasing the letters */ - - for (String = SrcString; *String; String++) - { - *String = (char) toupper ((int) *String); - } - - return; -} - - -/******************************************************************************* - * - * FUNCTION: AcpiUtStrtoul64 - * - * PARAMETERS: String - Null terminated string - * Base - Radix of the string: 16 or ACPI_ANY_BASE; - * ACPI_ANY_BASE means 'in behalf of ToInteger' - * RetInteger - Where the converted integer is returned - * - * RETURN: Status and Converted value - * - * DESCRIPTION: Convert a string into an unsigned value. Performs either a - * 32-bit or 64-bit conversion, depending on the current mode - * of the interpreter. - * NOTE: Does not support Octal strings, not needed. - * - ******************************************************************************/ - -ACPI_STATUS -AcpiUtStrtoul64 ( - char *String, - UINT32 Base, - UINT64 *RetInteger) -{ - UINT32 ThisDigit = 0; - UINT64 ReturnValue = 0; - UINT64 Quotient; - UINT64 Dividend; - UINT32 ToIntegerOp = (Base == ACPI_ANY_BASE); - UINT32 Mode32 = (AcpiGbl_IntegerByteWidth == 4); - UINT8 ValidDigits = 0; - UINT8 SignOf0x = 0; - UINT8 Term = 0; - - - ACPI_FUNCTION_TRACE_STR (UtStroul64, String); - - - switch (Base) - { - case ACPI_ANY_BASE: - case 16: - - break; - - default: - - /* Invalid Base */ - - return_ACPI_STATUS (AE_BAD_PARAMETER); - } - - if (!String) - { - goto ErrorExit; - } - - /* Skip over any white space in the buffer */ - - while ((*String) && (isspace ((int) *String) || *String == '\t')) - { - String++; - } - - if (ToIntegerOp) - { - /* - * Base equal to ACPI_ANY_BASE means 'ToInteger operation case'. - * We need to determine if it is decimal or hexadecimal. - */ - if ((*String == '0') && (tolower ((int) *(String + 1)) == 'x')) - { - SignOf0x = 1; - Base = 16; - - /* Skip over the leading '0x' */ - String += 2; - } - else - { - Base = 10; - } - } - - /* Any string left? Check that '0x' is not followed by white space. */ - - if (!(*String) || isspace ((int) *String) || *String == '\t') - { - if (ToIntegerOp) - { - goto ErrorExit; - } - else - { - goto AllDone; - } - } - - /* - * Perform a 32-bit or 64-bit conversion, depending upon the current - * execution mode of the interpreter - */ - Dividend = (Mode32) ? ACPI_UINT32_MAX : ACPI_UINT64_MAX; - - /* Main loop: convert the string to a 32- or 64-bit integer */ - - while (*String) - { - if (isdigit ((int) *String)) - { - /* Convert ASCII 0-9 to Decimal value */ - - ThisDigit = ((UINT8) *String) - '0'; - } - else if (Base == 10) - { - /* Digit is out of range; possible in ToInteger case only */ - - Term = 1; - } - else - { - ThisDigit = (UINT8) toupper ((int) *String); - if (isxdigit ((int) ThisDigit)) - { - /* Convert ASCII Hex char to value */ - - ThisDigit = ThisDigit - 'A' + 10; - } - else - { - Term = 1; - } - } - - if (Term) - { - if (ToIntegerOp) - { - goto ErrorExit; - } - else - { - break; - } - } - else if ((ValidDigits == 0) && (ThisDigit == 0) && !SignOf0x) - { - /* Skip zeros */ - String++; - continue; - } - - ValidDigits++; - - if (SignOf0x && ((ValidDigits > 16) || ((ValidDigits > 8) && Mode32))) - { - /* - * This is ToInteger operation case. - * No any restrictions for string-to-integer conversion, - * see ACPI spec. - */ - goto ErrorExit; - } - - /* Divide the digit into the correct position */ - - (void) AcpiUtShortDivide ((Dividend - (UINT64) ThisDigit), - Base, &Quotient, NULL); - - if (ReturnValue > Quotient) - { - if (ToIntegerOp) - { - goto ErrorExit; - } - else - { - break; - } - } - - ReturnValue *= Base; - ReturnValue += ThisDigit; - String++; - } - - /* All done, normal exit */ - -AllDone: - - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Converted value: %8.8X%8.8X\n", - ACPI_FORMAT_UINT64 (ReturnValue))); - - *RetInteger = ReturnValue; - return_ACPI_STATUS (AE_OK); - - -ErrorExit: - /* Base was set/validated above */ - - if (Base == 10) - { - return_ACPI_STATUS (AE_BAD_DECIMAL_CONSTANT); - } - else - { - return_ACPI_STATUS (AE_BAD_HEX_CONSTANT); - } -} - - /******************************************************************************* * * FUNCTION: AcpiUtPrintString @@ -682,78 +345,3 @@ UtConvertBackslashes ( } } #endif - -#if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) -/******************************************************************************* - * - * FUNCTION: AcpiUtSafeStrcpy, AcpiUtSafeStrcat, AcpiUtSafeStrncat - * - * PARAMETERS: Adds a "DestSize" parameter to each of the standard string - * functions. This is the size of the Destination buffer. - * - * RETURN: TRUE if the operation would overflow the destination buffer. - * - * DESCRIPTION: Safe versions of standard Clib string functions. Ensure that - * the result of the operation will not overflow the output string - * buffer. - * - * NOTE: These functions are typically only helpful for processing - * user input and command lines. For most ACPICA code, the - * required buffer length is precisely calculated before buffer - * allocation, so the use of these functions is unnecessary. - * - ******************************************************************************/ - -BOOLEAN -AcpiUtSafeStrcpy ( - char *Dest, - ACPI_SIZE DestSize, - char *Source) -{ - - if (strlen (Source) >= DestSize) - { - return (TRUE); - } - - strcpy (Dest, Source); - return (FALSE); -} - -BOOLEAN -AcpiUtSafeStrcat ( - char *Dest, - ACPI_SIZE DestSize, - char *Source) -{ - - if ((strlen (Dest) + strlen (Source)) >= DestSize) - { - return (TRUE); - } - - strcat (Dest, Source); - return (FALSE); -} - -BOOLEAN -AcpiUtSafeStrncat ( - char *Dest, - ACPI_SIZE DestSize, - char *Source, - ACPI_SIZE MaxTransferLength) -{ - ACPI_SIZE ActualTransferLength; - - - ActualTransferLength = ACPI_MIN (MaxTransferLength, strlen (Source)); - - if ((strlen (Dest) + ActualTransferLength) >= DestSize) - { - return (TRUE); - } - - strncat (Dest, Source, MaxTransferLength); - return (FALSE); -} -#endif diff --git a/source/include/acdebug.h b/source/include/acdebug.h index 11cf02e..8b6ac89 100644 --- a/source/include/acdebug.h +++ b/source/include/acdebug.h @@ -137,6 +137,12 @@ AcpiDbSleep ( char *ObjectArg); void +AcpiDbTrace ( + char *EnableArg, + char *MethodArg, + char *OnceArg); + +void AcpiDbDisplayLocks ( void); @@ -425,6 +431,32 @@ AcpiDbGetNextToken ( /* + * dbobject + */ +void +AcpiDbDecodeInternalObject ( + ACPI_OPERAND_OBJECT *ObjDesc); + +void +AcpiDbDisplayInternalObject ( + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState); + +void +AcpiDbDecodeArguments ( + ACPI_WALK_STATE *WalkState); + +void +AcpiDbDecodeLocals ( + ACPI_WALK_STATE *WalkState); + +void +AcpiDbDumpMethodInfo ( + ACPI_STATUS Status, + ACPI_WALK_STATE *WalkState); + + +/* * dbstats - Generation and display of ACPI table statistics */ void diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h index 966ec93..180f8e6 100644 --- a/source/include/acdisasm.h +++ b/source/include/acdisasm.h @@ -399,7 +399,9 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[]; @@ -595,6 +597,10 @@ AcpiDmDumpStao ( ACPI_TABLE_HEADER *Table); void +AcpiDmDumpTcpa ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpVrtc ( ACPI_TABLE_HEADER *Table); @@ -637,10 +643,6 @@ AcpiDmDisassembleOneOp ( ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op); -void -AcpiDmDecodeInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc); - UINT32 AcpiDmListType ( ACPI_PARSE_OBJECT *Op); @@ -700,29 +702,6 @@ AcpiDmNamestring ( /* - * dmobject - */ -void -AcpiDmDisplayInternalObject ( - ACPI_OPERAND_OBJECT *ObjDesc, - ACPI_WALK_STATE *WalkState); - -void -AcpiDmDisplayArguments ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDmDisplayLocals ( - ACPI_WALK_STATE *WalkState); - -void -AcpiDmDumpMethodInfo ( - ACPI_STATUS Status, - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op); - - -/* * dmbuffer */ void diff --git a/source/include/acdispat.h b/source/include/acdispat.h index 9364fe3..0a1b1ac 100644 --- a/source/include/acdispat.h +++ b/source/include/acdispat.h @@ -461,4 +461,14 @@ AcpiDsResultPush ( ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState); + +/* + * dsdebug - parser debugging routines + */ +void +AcpiDsDumpMethodStack ( + ACPI_STATUS Status, + ACPI_WALK_STATE *WalkState, + ACPI_PARSE_OBJECT *Op); + #endif /* _ACDISPAT_H_ */ diff --git a/source/include/acglobal.h b/source/include/acglobal.h index 9e7da94..eaa364d 100644 --- a/source/include/acglobal.h +++ b/source/include/acglobal.h @@ -293,8 +293,6 @@ ACPI_GLOBAL (UINT32, AcpiFixedEventCount[ACPI_NUM_FIXED_EVENT ACPI_GLOBAL (UINT32, AcpiGbl_OriginalDbgLevel); ACPI_GLOBAL (UINT32, AcpiGbl_OriginalDbgLayer); -ACPI_GLOBAL (UINT32, AcpiGbl_TraceDbgLevel); -ACPI_GLOBAL (UINT32, AcpiGbl_TraceDbgLayer); /***************************************************************************** @@ -313,6 +311,7 @@ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_NoResourceDisassembly, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_IgnoreNoopOperator, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_CstyleDisassembly, TRUE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ForceAmlDisassembly, FALSE); +ACPI_INIT_GLOBAL (ACPI_PARSE_OBJECT *, AcpiGbl_PreviousOp, NULL); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_Disasm); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_Verbose); diff --git a/source/include/acinterp.h b/source/include/acinterp.h index 00eb8f0..f53e6c5 100644 --- a/source/include/acinterp.h +++ b/source/include/acinterp.h @@ -143,6 +143,35 @@ AcpiExDoDebugObject ( UINT32 Level, UINT32 Index); +void +AcpiExStartTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState); + +void +AcpiExStopTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState); + +void +AcpiExStartTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState); + +void +AcpiExStopTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState); + +void +AcpiExTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname); + /* * exfield - ACPI AML (p-code) execution - field manipulation diff --git a/source/include/aclocal.h b/source/include/aclocal.h index dc1afff..7f62cc8 100644 --- a/source/include/aclocal.h +++ b/source/include/aclocal.h @@ -193,8 +193,12 @@ typedef struct acpi_namespace_node */ #ifdef ACPI_LARGE_NAMESPACE_NODE union acpi_parse_object *Op; + void *MethodLocals; + void *MethodArgs; UINT32 Value; UINT32 Length; + UINT8 ArgCount; + #endif } ACPI_NAMESPACE_NODE; @@ -864,7 +868,7 @@ typedef union acpi_parse_value } ACPI_PARSE_VALUE; -#ifdef ACPI_DISASSEMBLER +#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) #define ACPI_DISASM_ONLY_MEMBERS(a) a; #else #define ACPI_DISASM_ONLY_MEMBERS(a) @@ -875,7 +879,7 @@ typedef union acpi_parse_value UINT8 DescriptorType; /* To differentiate various internal objs */\ UINT8 Flags; /* Type of Op */\ UINT16 AmlOpcode; /* AML opcode */\ - UINT32 AmlOffset; /* Offset of declaration in AML */\ + UINT8 *Aml; /* Address of declaration in AML */\ union acpi_parse_object *Next; /* Next op */\ ACPI_NAMESPACE_NODE *Node; /* For use by interpreter */\ ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\ @@ -1291,7 +1295,9 @@ typedef struct acpi_db_method_info * Index of current thread inside all them created. */ char InitArgs; +#ifdef ACPI_DEBUGGER ACPI_OBJECT_TYPE ArgTypes[4]; +#endif char *Arguments[4]; char NumThreadsStr[11]; char IdOfThreadStr[11]; diff --git a/source/include/acmacros.h b/source/include/acmacros.h index 35d53f6..48620fb 100644 --- a/source/include/acmacros.h +++ b/source/include/acmacros.h @@ -223,6 +223,16 @@ #define ACPI_MUL_32(a) _ACPI_MUL(a, 5) #define ACPI_MOD_32(a) _ACPI_MOD(a, 32) +/* Test for ASCII character */ + +#define ACPI_IS_ASCII(c) ((c) < 0x80) + +/* Signed integers */ + +#define ACPI_SIGN_POSITIVE 0 +#define ACPI_SIGN_NEGATIVE 1 + + /* * Rounding macros (Power of two boundaries only) */ diff --git a/source/include/acnamesp.h b/source/include/acnamesp.h index 786fd29..bea4ebf 100644 --- a/source/include/acnamesp.h +++ b/source/include/acnamesp.h @@ -350,16 +350,22 @@ UINT32 AcpiNsOpensScope ( ACPI_OBJECT_TYPE Type); -ACPI_STATUS -AcpiNsBuildExternalPath ( - ACPI_NAMESPACE_NODE *Node, - ACPI_SIZE Size, - char *NameBuffer); - char * AcpiNsGetExternalPathname ( ACPI_NAMESPACE_NODE *Node); +UINT32 +AcpiNsBuildNormalizedPath ( + ACPI_NAMESPACE_NODE *Node, + char *FullPath, + UINT32 PathSize, + BOOLEAN NoTrailing); + +char * +AcpiNsGetNormalizedPathname ( + ACPI_NAMESPACE_NODE *Node, + BOOLEAN NoTrailing); + char * AcpiNsNameOfCurrentScope ( ACPI_WALK_STATE *WalkState); @@ -367,7 +373,8 @@ AcpiNsNameOfCurrentScope ( ACPI_STATUS AcpiNsHandleToPathname ( ACPI_HANDLE TargetHandle, - ACPI_BUFFER *Buffer); + ACPI_BUFFER *Buffer, + BOOLEAN NoTrailing); BOOLEAN AcpiNsPatternMatch ( diff --git a/source/include/acobject.h b/source/include/acobject.h index 481eb44..adeb414 100644 --- a/source/include/acobject.h +++ b/source/include/acobject.h @@ -213,6 +213,7 @@ typedef struct acpi_object_method UINT8 ParamCount; UINT8 SyncLevel; union acpi_operand_object *Mutex; + union acpi_operand_object *Node; UINT8 *AmlStart; union { diff --git a/source/include/acoutput.h b/source/include/acoutput.h index 0ef98eb..197f28b 100644 --- a/source/include/acoutput.h +++ b/source/include/acoutput.h @@ -89,7 +89,8 @@ #define ACPI_LV_DEBUG_OBJECT 0x00000002 #define ACPI_LV_INFO 0x00000004 #define ACPI_LV_REPAIR 0x00000008 -#define ACPI_LV_ALL_EXCEPTIONS 0x0000000F +#define ACPI_LV_TRACE_POINT 0x00000010 +#define ACPI_LV_ALL_EXCEPTIONS 0x0000001F /* Trace verbosity level 1 [Standard Trace Level] */ @@ -149,6 +150,7 @@ #define ACPI_DB_DEBUG_OBJECT ACPI_DEBUG_LEVEL (ACPI_LV_DEBUG_OBJECT) #define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO) #define ACPI_DB_REPAIR ACPI_DEBUG_LEVEL (ACPI_LV_REPAIR) +#define ACPI_DB_TRACE_POINT ACPI_DEBUG_LEVEL (ACPI_LV_TRACE_POINT) #define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS) /* Trace level -- also used in the global "DebugLevel" */ @@ -185,6 +187,21 @@ #define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL) +/* + * Global trace flags + */ +#define ACPI_TRACE_ENABLED ((UINT32) 4) +#define ACPI_TRACE_ONESHOT ((UINT32) 2) +#define ACPI_TRACE_OPCODE ((UINT32) 1) + +/* Defaults for trace debugging level/layer */ + +#define ACPI_TRACE_LEVEL_ALL ACPI_LV_ALL +#define ACPI_TRACE_LAYER_ALL 0x000001FF +#define ACPI_TRACE_LEVEL_DEFAULT ACPI_LV_TRACE_POINT +#define ACPI_TRACE_LAYER_DEFAULT ACPI_EXECUTER + + #if defined (ACPI_DEBUG_OUTPUT) || !defined (ACPI_NO_ERROR_MESSAGES) /* * The module name is used primarily for error and debug messages. @@ -439,6 +456,8 @@ #define ACPI_DUMP_PATHNAME(a, b, c, d) AcpiNsDumpPathname(a, b, c, d) #define ACPI_DUMP_BUFFER(a, b) AcpiUtDebugDumpBuffer((UINT8 *) a, b, DB_BYTE_DISPLAY, _COMPONENT) +#define ACPI_TRACE_POINT(a, b, c, d) AcpiTracePoint (a, b, c, d) + #else /* ACPI_DEBUG_OUTPUT */ /* * This is the non-debug case -- make everything go away, @@ -460,6 +479,7 @@ #define ACPI_DUMP_PATHNAME(a, b, c, d) #define ACPI_DUMP_BUFFER(a, b) #define ACPI_IS_DEBUG_ENABLED(Level, Component) 0 +#define ACPI_TRACE_POINT(a, b, c, d) /* Return macros must have a return statement at the minimum */ diff --git a/source/include/acparser.h b/source/include/acparser.h index a3c7666..a89c5c4 100644 --- a/source/include/acparser.h +++ b/source/include/acparser.h @@ -306,7 +306,7 @@ AcpiPsDeleteParseTree ( */ ACPI_PARSE_OBJECT * AcpiPsCreateScopeOp ( - void); + UINT8 *Aml); void AcpiPsInitOp ( @@ -315,7 +315,8 @@ AcpiPsInitOp ( ACPI_PARSE_OBJECT * AcpiPsAllocOp ( - UINT16 opcode); + UINT16 Opcode, + UINT8 *Aml); void AcpiPsFreeOp ( diff --git a/source/include/acpiosxf.h b/source/include/acpiosxf.h index 6062fda..f894abe 100644 --- a/source/include/acpiosxf.h +++ b/source/include/acpiosxf.h @@ -599,5 +599,14 @@ AcpiOsSetFileOffset ( UINT8 From); #endif +#ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTracePoint +void +AcpiOsTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname); +#endif + #endif /* __ACPIOSXF_H__ */ diff --git a/source/include/acpixf.h b/source/include/acpixf.h index 9177fbd..7eb0cb7 100644 --- a/source/include/acpixf.h +++ b/source/include/acpixf.h @@ -46,7 +46,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20150619 +#define ACPI_CA_VERSION 0x20150717 #include "acconfig.h" #include "actypes.h" @@ -253,7 +253,9 @@ ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_ReducedHardware, FALSE); * traced each time it is executed. */ ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceFlags, 0); -ACPI_INIT_GLOBAL (ACPI_NAME, AcpiGbl_TraceMethodName, 0); +ACPI_INIT_GLOBAL (const char *, AcpiGbl_TraceMethodName, NULL); +ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceDbgLevel, ACPI_TRACE_LEVEL_DEFAULT); +ACPI_INIT_GLOBAL (UINT32, AcpiGbl_TraceDbgLayer, ACPI_TRACE_LAYER_DEFAULT); /* * Runtime configuration of debug output control masks. We want the debug @@ -610,7 +612,7 @@ AcpiGetData ( ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS AcpiDebugTrace ( - char *Name, + const char *Name, UINT32 DebugLevel, UINT32 DebugLayer, UINT32 Flags)) @@ -1191,6 +1193,14 @@ AcpiDebugPrintRaw ( const char *Format, ...)) +ACPI_DBG_DEPENDENT_RETURN_VOID ( +void +AcpiTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname)) + ACPI_APP_DEPENDENT_RETURN_VOID ( ACPI_PRINTF_LIKE(1) void ACPI_INTERNAL_VAR_XFACE diff --git a/source/include/acstruct.h b/source/include/acstruct.h index 3a6faa6..10dc371 100644 --- a/source/include/acstruct.h +++ b/source/include/acstruct.h @@ -88,7 +88,7 @@ typedef struct acpi_walk_state BOOLEAN NamespaceOverride; /* Override existing objects */ UINT8 ResultSize; /* Total elements for the result stack */ UINT8 ResultCount; /* Current number of occupied elements of result stack */ - UINT32 AmlOffset; + UINT8 *Aml; UINT32 ArgTypes; UINT32 MethodBreakpoint; /* For single stepping */ UINT32 UserBreakpoint; /* User AML breakpoint */ diff --git a/source/include/actbl2.h b/source/include/actbl2.h index 02a3cb0..86b59bf 100644 --- a/source/include/actbl2.h +++ b/source/include/actbl2.h @@ -1375,14 +1375,28 @@ enum AcpiSpmiInterfaceTypes * December 19, 2014 * * NOTE: There are two versions of the table with the same signature -- - * the client version and the server version. + * the client version and the server version. The common PlatformClass + * field is used to differentiate the two types of tables. * ******************************************************************************/ -typedef struct acpi_table_tcpa_client +typedef struct acpi_table_tcpa_hdr { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT16 PlatformClass; + +} ACPI_TABLE_TCPA_HDR; + +/* + * Values for PlatformClass above. + * This is how the client and server subtables are differentiated + */ +#define ACPI_TCPA_CLIENT_TABLE 0 +#define ACPI_TCPA_SERVER_TABLE 1 + + +typedef struct acpi_table_tcpa_client +{ UINT32 MinimumLogLength; /* Minimum length for the event log area */ UINT64 LogAddress; /* Address of the event log area */ @@ -1390,8 +1404,6 @@ typedef struct acpi_table_tcpa_client typedef struct acpi_table_tcpa_server { - ACPI_TABLE_HEADER Header; /* Common ACPI table header */ - UINT16 PlatformClass; UINT16 Reserved; UINT64 MinimumLogLength; /* Minimum length for the event log area */ UINT64 LogAddress; /* Address of the event log area */ diff --git a/source/include/actypes.h b/source/include/actypes.h index 837c784..dbc8e3a 100644 --- a/source/include/actypes.h +++ b/source/include/actypes.h @@ -1022,7 +1022,8 @@ typedef struct acpi_buffer */ #define ACPI_FULL_PATHNAME 0 #define ACPI_SINGLE_NAME 1 -#define ACPI_NAME_TYPE_MAX 1 +#define ACPI_FULL_PATHNAME_NO_TRAILING 2 +#define ACPI_NAME_TYPE_MAX 2 /* @@ -1345,6 +1346,17 @@ typedef struct acpi_memory_list } ACPI_MEMORY_LIST; +/* Definitions of trace event types */ + +typedef enum +{ + ACPI_TRACE_AML_METHOD, + ACPI_TRACE_AML_OPCODE, + ACPI_TRACE_AML_REGION + +} ACPI_TRACE_EVENT_TYPE; + + /* Definitions of _OSI support */ #define ACPI_VENDOR_STRINGS 0x01 diff --git a/source/include/acutils.h b/source/include/acutils.h index 94f8591..9a05b38 100644 --- a/source/include/acutils.h +++ b/source/include/acutils.h @@ -173,6 +173,30 @@ typedef struct acpi_pkg_info #define DB_DWORD_DISPLAY 4 #define DB_QWORD_DISPLAY 8 + +/* + * utnonansi - Non-ANSI C library functions + */ +void +AcpiUtStrupr ( + char *SrcString); + +void +AcpiUtStrlwr ( + char *SrcString); + +int +AcpiUtStricmp ( + char *String1, + char *String2); + +ACPI_STATUS +AcpiUtStrtoul64 ( + char *String, + UINT32 Base, + UINT64 *RetInteger); + + /* * utglobal - Global data structures and procedures */ @@ -246,8 +270,6 @@ AcpiUtSubsystemShutdown ( void); -#define ACPI_IS_ASCII(c) ((c) < 0x80) - /* * utcopy - Object construction and conversion interfaces */ @@ -407,6 +429,7 @@ AcpiUtReportWarning ( char *ModuleName, UINT32 LineNumber); + /* * utdelete - Object deletion and reference counts */ @@ -732,11 +755,11 @@ AcpiUtWalkPackageTree ( ACPI_PKG_CALLBACK WalkCallback, void *Context); - /* Values for Base above (16=Hex, 10=Decimal) */ #define ACPI_ANY_BASE 0 + UINT32 AcpiUtDwordByteSwap ( UINT32 Value); @@ -809,27 +832,6 @@ AcpiUtGetResourceEndTag ( * utstring - String and character utilities */ void -AcpiUtStrupr ( - char *SrcString); - -#ifdef ACPI_ASL_COMPILER -void -AcpiUtStrlwr ( - char *SrcString); - -int -AcpiUtStricmp ( - char *String1, - char *String2); -#endif - -ACPI_STATUS -AcpiUtStrtoul64 ( - char *String, - UINT32 Base, - UINT64 *RetInteger); - -void AcpiUtPrintString ( char *String, UINT16 MaxLength); @@ -954,6 +956,7 @@ AcpiUtCreateList ( #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ + /* * utaddress - address range check */ @@ -980,6 +983,7 @@ void AcpiUtDeleteAddressLists ( void); + /* * utxferror - various error/warning output functions */ @@ -1026,6 +1030,7 @@ AcpiUtMethodError ( const char *Path, ACPI_STATUS LookupStatus); + /* * Utility functions for ACPI names and IDs */ @@ -1041,6 +1046,7 @@ const char * AcpiAhMatchUuid ( UINT8 *Data); + /* * utprint - printf/vprintf output functions */ @@ -1082,6 +1088,7 @@ AcpiUtFilePrintf ( ...); #endif + /* * utuuid -- UUID support functions */ diff --git a/source/include/platform/acenvex.h b/source/include/platform/acenvex.h index c799fd8..12fec12 100644 --- a/source/include/platform/acenvex.h +++ b/source/include/platform/acenvex.h @@ -56,6 +56,9 @@ #if defined(_LINUX) || defined(__linux__) #include "aclinuxex.h" +#elif defined(WIN32) +#include "acwinex.h" + #elif defined(_AED_EFI) #include "acefiex.h" diff --git a/source/include/platform/acmsvc.h b/source/include/platform/acmsvc.h index da9df89..c507170 100644 --- a/source/include/platform/acmsvc.h +++ b/source/include/platform/acmsvc.h @@ -57,7 +57,6 @@ #define stat _stat #define fstat _fstat #define mkdir _mkdir -#define strlwr _strlwr #define O_RDONLY _O_RDONLY #define O_BINARY _O_BINARY #define O_CREAT _O_CREAT @@ -148,12 +147,9 @@ #endif -/* Debug support. Must be last in this file, do not move. */ +/* Debug support. */ #ifdef _DEBUG -#define _CRTDBG_MAP_ALLOC /* Enables specific file/lineno for leaks */ - -#include /* * Debugging memory corruption issues with windows: diff --git a/source/include/platform/acmsvcex.h b/source/include/platform/acmsvcex.h new file mode 100644 index 0000000..bc42e6a --- /dev/null +++ b/source/include/platform/acmsvcex.h @@ -0,0 +1,54 @@ +/****************************************************************************** + * + * Name: acmsvcex.h - Extra VC specific defines, etc. + * + *****************************************************************************/ + +/* + * Copyright (C) 2000 - 2015, Intel Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + +#ifndef __ACMSVCEX_H__ +#define __ACMSVCEX_H__ + +/* Debug support. */ + +#ifdef _DEBUG +#define _CRTDBG_MAP_ALLOC /* Enables specific file/lineno for leaks */ +#include +#endif + +#endif /* __ACMSVCEX_H__ */ diff --git a/source/include/platform/acwinex.h b/source/include/platform/acwinex.h new file mode 100644 index 0000000..5bc85d5 --- /dev/null +++ b/source/include/platform/acwinex.h @@ -0,0 +1,52 @@ +/****************************************************************************** + * + * Name: acwinex.h - Extra OS specific defines, etc. + * + *****************************************************************************/ + +/* + * Copyright (C) 2000 - 2015, Intel Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + +#ifndef __ACWINEX_H__ +#define __ACWINEX_H__ + +/* Windows uses VC */ +#ifdef _MSC_VER +#include "acmsvcex.h" +#endif + +#endif /* __ACWINEX_H__ */ diff --git a/source/tools/acpiexec/aetables.c b/source/tools/acpiexec/aetables.c index 14452db..ebb6aeb 100644 --- a/source/tools/acpiexec/aetables.c +++ b/source/tools/acpiexec/aetables.c @@ -329,6 +329,8 @@ AeBuildLocalTables ( * 2) A "hardware reduced" local FADT * 3) A fully featured local FADT */ + memset (&LocalFADT, 0, sizeof (ACPI_TABLE_FADT)); + if (ExternalFadt) { /* @@ -361,7 +363,7 @@ AeBuildLocalTables ( } else if (AcpiGbl_UseHwReducedFadt) { - memcpy (&LocalFADT, HwReducedFadtCode, sizeof (ACPI_TABLE_FADT)); + memcpy (&LocalFADT, HwReducedFadtCode, ACPI_FADT_V5_SIZE); LocalFADT.Dsdt = (UINT32) DsdtAddress; LocalFADT.XDsdt = DsdtAddress; @@ -374,7 +376,6 @@ AeBuildLocalTables ( /* * Build a local FADT so we can test the hardware/event init */ - memset (&LocalFADT, 0, sizeof (ACPI_TABLE_FADT)); LocalFADT.Header.Revision = 5; AeInitializeTableHeader ((void *) &LocalFADT, ACPI_SIG_FADT, sizeof (ACPI_TABLE_FADT)); diff --git a/source/tools/acpihelp/acpihelp.h b/source/tools/acpihelp/acpihelp.h index e1b061d..251cd9d 100644 --- a/source/tools/acpihelp/acpihelp.h +++ b/source/tools/acpihelp/acpihelp.h @@ -115,7 +115,7 @@ typedef struct ah_asl_keyword typedef struct ah_directive_info { char *Name; - char *Operands; + char *Description; } AH_DIRECTIVE_INFO; @@ -128,10 +128,6 @@ extern const AH_TABLE AcpiSupportedTables[]; extern BOOLEAN AhDisplayAll; void -AhStrupr ( - char *SrcString); - -void AhFindAmlOpcode ( char *Name); diff --git a/source/tools/acpihelp/ahaslkey.c b/source/tools/acpihelp/ahaslkey.c index e15d47c..3031873 100644 --- a/source/tools/acpihelp/ahaslkey.c +++ b/source/tools/acpihelp/ahaslkey.c @@ -153,26 +153,40 @@ const AH_ASL_KEYWORD AslKeywordInfo[] = const AH_DIRECTIVE_INFO PreprocessorDirectives[] = { - {"#define", "OriginalName, DefinedName"}, - {"#elif", "Expression"}, - {"#else", ""}, - {"#endif", ""}, - {"#error", "Message"}, - {"#if", "Expression"}, - {"#ifdef", "DefinedName"}, - {"#ifndef", "DefinedName"}, - {"#include", "\"Filename\""}, - {"#include", ""}, - {"#includebuffer", "\"Filename\""}, - {"#includebuffer", ""}, - {"#line", ""}, - {"#pragma", "Disable error-number"}, - {"#pragma", "Message"}, - {"#undef", "DefinedName"}, - {"#warning", ""}, - {"__DATE__", "Returns current date"}, - {"__FILE__", "Returns name of current ASL file"}, - {"__LINE__", "Returns line number in ASL file"}, - {"__PATH__", "Returns full pathname of current ASL file"}, - {NULL, 0} + {"#include \"Filename\"", "Standard include of an ASCII ASL source code file"}, + {"#include ", "Alternate syntax for #include, alternate search path"}, + {"#includebuffer \"Filename\" ", "Include a binary file to create AML Buffer with ASL namepath"}, + {"#includebuffer ", "Alternate syntax for #includebuffer, alternate search path"}, + + {"", ""}, + {"#define , ", "Simple macro definition (full macros not supported at this time)"}, + {"#define , ","Simple macro definition (full macros not supported at this time)"}, + {"#undef ", "Delete a previous #define"}, + + {"", ""}, + {"#if ", "Evaluate and test return value"}, + {"#ifdef ", "Test existence of the "}, + {"#ifndef ", "Test non-existence of the "}, + {"#elif ", "Else-If contraction - evaluate #if , test return value"}, + {"#else", "Execute alternate case for a previous #if, #ifdef or #ifndef block"}, + {"#endif", "Close a previous #if, #ifdef or #ifndef block"}, + + {"", ""}, + {"#line [Filename]", "Set the current ASL source code line number, optional filename"}, + + {"", ""}, + {"#error \"String\"", "Emit error message and abort compilation"}, + {"#warning \"String\"", "Emit an iASL warning at this location in the ASL source"}, + + {"", ""}, + {"#pragma disable (Error number)", "Disable an iASL error or warning number"}, + {"#pragma message \"String\"", "Emit an informational message to the output file(s)"}, + + {"", ""}, + {"__FILE__", "Return the simple filename of the current ASL file"}, + {"__PATH__", "Return the full pathname of the current ASL file"}, + {"__LINE__", "Return the current line number within the current ASL file"}, + {"__DATE__", "Return the current date"}, + {"__IASL__", "Permanently defined for the iASL compiler"}, + {NULL, NULL} }; diff --git a/source/tools/acpihelp/ahdecode.c b/source/tools/acpihelp/ahdecode.c index 95ea29e..7e6d7c8 100644 --- a/source/tools/acpihelp/ahdecode.c +++ b/source/tools/acpihelp/ahdecode.c @@ -100,6 +100,18 @@ AhPrintOneField ( const char *Field); +/******************************************************************************* + * + * FUNCTION: AhDisplayDirectives + * + * PARAMETERS: None + * + * RETURN: None + * + * DESCRIPTION: Display all iASL preprocessor directives. + * + ******************************************************************************/ + void AhDisplayDirectives ( void) @@ -107,11 +119,11 @@ AhDisplayDirectives ( const AH_DIRECTIVE_INFO *Info; - printf ("iASL Preprocessor directives:\n\n"); + printf ("iASL Preprocessor Directives\n\n"); for (Info = PreprocessorDirectives; Info->Name; Info++) { - printf ("%16s : %s\n", Info->Name, Info->Operands); + printf (" %-36s : %s\n", Info->Name, Info->Description); } } @@ -148,7 +160,7 @@ AhFindPredefinedNames ( /* Contruct a local name or name prefix */ - AhStrupr (NamePrefix); + AcpiUtStrupr (NamePrefix); if (*NamePrefix == '_') { NamePrefix++; @@ -333,7 +345,7 @@ AhFindAmlOpcode ( BOOLEAN Found = FALSE; - AhStrupr (Name); + AcpiUtStrupr (Name); /* Find/display all opcode names that match the input name prefix */ @@ -354,7 +366,7 @@ AhFindAmlOpcode ( /* Upper case the opcode name before substring compare */ strcpy (Gbl_Buffer, Op->OpcodeName); - AhStrupr (Gbl_Buffer); + AcpiUtStrupr (Gbl_Buffer); if (strstr (Gbl_Buffer, Name) == Gbl_Buffer) { @@ -511,7 +523,7 @@ AhFindAslKeywords ( BOOLEAN Found = FALSE; - AhStrupr (Name); + AcpiUtStrupr (Name); for (Keyword = AslKeywordInfo; Keyword->Name; Keyword++) { @@ -525,7 +537,7 @@ AhFindAslKeywords ( /* Upper case the operator name before substring compare */ strcpy (Gbl_Buffer, Keyword->Name); - AhStrupr (Gbl_Buffer); + AcpiUtStrupr (Gbl_Buffer); if (strstr (Gbl_Buffer, Name) == Gbl_Buffer) { @@ -626,7 +638,7 @@ AhFindAslOperators ( BOOLEAN MatchCount = 0; - AhStrupr (Name); + AcpiUtStrupr (Name); /* Find/display all names that match the input name prefix */ @@ -642,7 +654,7 @@ AhFindAslOperators ( /* Upper case the operator name before substring compare */ strcpy (Gbl_Buffer, Operator->Name); - AhStrupr (Gbl_Buffer); + AcpiUtStrupr (Gbl_Buffer); if (strstr (Gbl_Buffer, Name) == Gbl_Buffer) { @@ -866,7 +878,7 @@ AhDisplayDeviceIds ( /* Find/display all names that match the input name prefix */ - AhStrupr (Name); + AcpiUtStrupr (Name); for (Info = AslDeviceIds; Info->Name; Info++) { Matched = TRUE; diff --git a/source/tools/acpihelp/ahmain.c b/source/tools/acpihelp/ahmain.c index 0416eec..5ce3708 100644 --- a/source/tools/acpihelp/ahmain.c +++ b/source/tools/acpihelp/ahmain.c @@ -278,40 +278,3 @@ main ( return (0); } - - -/******************************************************************************* - * - * FUNCTION: AhStrupr (strupr) - * - * PARAMETERS: SrcString - The source string to convert - * - * RETURN: None - * - * DESCRIPTION: Convert string to uppercase - * - * NOTE: This is not a POSIX function, so it appears here, not in utclib.c - * - ******************************************************************************/ - -void -AhStrupr ( - char *SrcString) -{ - char *String; - - - if (!SrcString) - { - return; - } - - /* Walk entire string, uppercasing the letters */ - - for (String = SrcString; *String; String++) - { - *String = (char) toupper ((int) *String); - } - - return; -} diff --git a/source/tools/acpinames/anstubs.c b/source/tools/acpinames/anstubs.c index 7d2fdcc..f8b1d2d 100644 --- a/source/tools/acpinames/anstubs.c +++ b/source/tools/acpinames/anstubs.c @@ -164,6 +164,60 @@ AcpiNsExecModuleCodeList ( { } +void +AcpiExDoDebugObject ( + ACPI_OPERAND_OBJECT *SourceDesc, + UINT32 Level, + UINT32 Index) +{ + return; +} + +void +AcpiExStartTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +void +AcpiExStopTraceMethod ( + ACPI_NAMESPACE_NODE *MethodNode, + ACPI_OPERAND_OBJECT *ObjDesc, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +void +AcpiExStartTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) +{ + return; +} + +void +AcpiExStopTraceOpcode ( + ACPI_PARSE_OBJECT *Op, + ACPI_WALK_STATE *WalkState) + +{ + return; +} + +void +AcpiExTracePoint ( + ACPI_TRACE_EVENT_TYPE Type, + BOOLEAN Begin, + UINT8 *Aml, + char *Pathname) +{ + return; +} + /* Dispatcher */ diff --git a/source/tools/acpisrc/acpisrc.h b/source/tools/acpisrc/acpisrc.h index d5dc9f8..17acac3 100644 --- a/source/tools/acpisrc/acpisrc.h +++ b/source/tools/acpisrc/acpisrc.h @@ -426,7 +426,3 @@ AsInsertCarriageReturns ( void AsConvertToLineFeeds ( char *Buffer); - -void -AsStrlwr ( - char *SrcString); diff --git a/source/tools/acpisrc/asconvrt.c b/source/tools/acpisrc/asconvrt.c index 5b0f5f4..5a82167 100644 --- a/source/tools/acpisrc/asconvrt.c +++ b/source/tools/acpisrc/asconvrt.c @@ -1487,7 +1487,7 @@ AsInsertPrefix ( } strcpy (LowerKeyword, Keyword); - AsStrlwr (LowerKeyword); + AcpiUtStrlwr (LowerKeyword); SubBuffer = Buffer; SubString = Buffer; diff --git a/source/tools/acpisrc/asfile.c b/source/tools/acpisrc/asfile.c index 1e686cf..cd18430 100644 --- a/source/tools/acpisrc/asfile.c +++ b/source/tools/acpisrc/asfile.c @@ -180,7 +180,7 @@ AsProcessTree ( { if (ConversionTable->Flags & FLG_LOWERCASE_DIRNAMES) { - AsStrlwr (TargetPath); + AcpiUtStrlwr (TargetPath); } VERBOSE_PRINT (("Creating Directory \"%s\"\n", TargetPath)); diff --git a/source/tools/acpisrc/asmain.c b/source/tools/acpisrc/asmain.c index 95f8bee..4da3cdd 100644 --- a/source/tools/acpisrc/asmain.c +++ b/source/tools/acpisrc/asmain.c @@ -47,11 +47,6 @@ /* Local prototypes */ int -AsStricmp ( - char *String1, - char *String2); - -int AsExaminePaths ( ACPI_CONVERSION_TABLE *ConversionTable, char *Source, @@ -104,38 +99,6 @@ BOOLEAN Gbl_IgnoreTranslationEscapes = FALSE; /****************************************************************************** * - * FUNCTION: AsStricmp - * - * DESCRIPTION: Implementation of the non-ANSI stricmp function (compare - * strings with no case sensitivity) - * - ******************************************************************************/ - -int -AsStricmp ( - char *String1, - char *String2) -{ - int c1; - int c2; - - - do - { - c1 = tolower ((int) *String1); - c2 = tolower ((int) *String2); - - String1++; - String2++; - } - while ((c1 == c2) && (c1)); - - return (c1 - c2); -} - - -/****************************************************************************** - * * FUNCTION: AsExaminePaths * * DESCRIPTION: Source and Target pathname verification and handling @@ -177,7 +140,7 @@ AsExaminePaths ( return (0); } - if (!AsStricmp (Source, Target)) + if (!AcpiUtStricmp (Source, Target)) { printf ("Target path is the same as the source path, overwrite?\n"); Response = getchar (); diff --git a/source/tools/acpisrc/astable.c b/source/tools/acpisrc/astable.c index a10681e..6cc2713 100644 --- a/source/tools/acpisrc/astable.c +++ b/source/tools/acpisrc/astable.c @@ -264,6 +264,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { {"ACPI_MEM_SPACE_CONTEXT", SRC_TYPE_STRUCT}, {"ACPI_MEMORY_ATTRIBUTE", SRC_TYPE_STRUCT}, {"ACPI_MEMORY_LIST", SRC_TYPE_STRUCT}, + {"ACPI_METHOD_LOCAL", SRC_TYPE_STRUCT}, {"ACPI_MTMR_ENTRY", SRC_TYPE_STRUCT}, {"ACPI_MUTEX", SRC_TYPE_SIMPLE}, {"ACPI_MUTEX_HANDLE", SRC_TYPE_SIMPLE}, @@ -418,6 +419,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { {"ACPI_TAG_INFO", SRC_TYPE_STRUCT}, {"ACPI_THREAD_ID", SRC_TYPE_SIMPLE}, {"ACPI_THREAD_STATE", SRC_TYPE_STRUCT}, + {"ACPI_TRACE_EVENT_TYPE", SRC_TYPE_SIMPLE}, {"ACPI_TYPED_IDENTIFIER_TABLE", SRC_TYPE_STRUCT}, {"ACPI_UINTPTR_T", SRC_TYPE_SIMPLE}, {"ACPI_UPDATE_STATE", SRC_TYPE_STRUCT}, @@ -491,6 +493,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { {"ASL_LISTING_NODE", SRC_TYPE_STRUCT}, {"ASL_MAPPING_ENTRY", SRC_TYPE_STRUCT}, {"ASL_METHOD_INFO", SRC_TYPE_STRUCT}, + {"ASL_METHOD_LOCAL", SRC_TYPE_STRUCT}, {"ASL_RESERVED_INFO", SRC_TYPE_STRUCT}, {"ASL_RESOURCE_INFO", SRC_TYPE_STRUCT}, {"ASL_RESOURCE_NODE", SRC_TYPE_STRUCT}, @@ -667,6 +670,8 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { {"ACPI_SRAT_MEM_AFFINITY", SRC_TYPE_STRUCT}, {"ACPI_SRAT_X2APIC_CPU_AFFINITY", SRC_TYPE_STRUCT}, {"ACPI_SRAT_GICC_AFFINITY", SRC_TYPE_STRUCT}, + {"ACPI_TABLE_TCPA_CLIENT", SRC_TYPE_STRUCT}, + {"ACPI_TABLE_TCPA_SERVER", SRC_TYPE_STRUCT}, {"ACPI_TPM2_CONTROL", SRC_TYPE_STRUCT}, {"ACPI_WDAT_ENTRY", SRC_TYPE_STRUCT}, diff --git a/source/tools/acpisrc/asutils.c b/source/tools/acpisrc/asutils.c index 31103a0..7621fd6 100644 --- a/source/tools/acpisrc/asutils.c +++ b/source/tools/acpisrc/asutils.c @@ -44,40 +44,6 @@ #include "acpisrc.h" -/******************************************************************************* - * - * FUNCTION: AsStrlwr (strlwr) - * - * PARAMETERS: SrcString - The source string to convert - * - * RETURN: None - * - * DESCRIPTION: Convert string to lowercase - * - * NOTE: This is not a POSIX function, so it appears here so that we don't have - * header file issues with the various hosts/compilers/clibs. - * - ******************************************************************************/ - -void -AsStrlwr ( - char *SrcString) -{ - char *String; - - - /* Walk entire string, lowercasing the letters */ - - if (SrcString) - { - for (String = SrcString; *String; String++) - { - *String = (char) tolower ((int) *String); - } - } -} - - /****************************************************************************** * * FUNCTION: AsSkipUntilChar diff --git a/source/tools/acpixtract/acpixtract.c b/source/tools/acpixtract/acpixtract.c index d005919..373c9cd 100644 --- a/source/tools/acpixtract/acpixtract.c +++ b/source/tools/acpixtract/acpixtract.c @@ -53,10 +53,6 @@ /* Local prototypes */ static void -AxStrlwr ( - char *String); - -static void AxCheckAscii ( char *Name, int Count); @@ -129,31 +125,6 @@ static char InstanceBuffer[AX_LINE_BUFFER_SIZE]; /******************************************************************************* * - * FUNCTION: AxStrlwr - * - * PARAMETERS: String - Ascii string - * - * RETURN: None - * - * DESCRIPTION: String lowercase function. - * - ******************************************************************************/ - -static void -AxStrlwr ( - char *String) -{ - - while (*String) - { - *String = (char) tolower ((int) *String); - String++; - } -} - - -/******************************************************************************* - * * FUNCTION: AxCheckAscii * * PARAMETERS: Name - Ascii string, at least as long as Count @@ -594,7 +565,7 @@ AxExtractTables ( sprintf (Filename, "%4.4s.dat", ThisSignature); } - AxStrlwr (Filename); + AcpiUtStrlwr (Filename); OutputFile = fopen (Filename, "w+b"); if (!OutputFile) { @@ -695,7 +666,7 @@ AxListTables ( FILE *InputFile; size_t HeaderSize; unsigned char Header[48]; - int TableCount = 0; + unsigned int TableCount = 0; ACPI_TABLE_HEADER *TableHeader = (ACPI_TABLE_HEADER *) (void *) Header; diff --git a/tests/aapits/asl/Makefile b/tests/aapits/asl/Makefile old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/README b/tests/aapits/asl/README old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/dsdt.asl b/tests/aapits/asl/dsdt.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/dsdt0.asl b/tests/aapits/asl/dsdt0.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/dsdt1.asl b/tests/aapits/asl/dsdt1.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/dsdt2.asl b/tests/aapits/asl/dsdt2.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/gpev0000.asl b/tests/aapits/asl/gpev0000.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0015.asl b/tests/aapits/asl/hdwr0015.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0018.asl b/tests/aapits/asl/hdwr0018.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0019.asl b/tests/aapits/asl/hdwr0019.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0020.asl b/tests/aapits/asl/hdwr0020.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0022.asl b/tests/aapits/asl/hdwr0022.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0040.asl b/tests/aapits/asl/hdwr0040.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hdwr0041.asl b/tests/aapits/asl/hdwr0041.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hndl0000.asl b/tests/aapits/asl/hndl0000.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hndl0015.asl b/tests/aapits/asl/hndl0015.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hndl0016.asl b/tests/aapits/asl/hndl0016.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hndl0038.asl b/tests/aapits/asl/hndl0038.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/hndl0115.asl b/tests/aapits/asl/hndl0115.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0030.asl b/tests/aapits/asl/init0030.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0032.asl b/tests/aapits/asl/init0032.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0034.asl b/tests/aapits/asl/init0034.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0058.asl b/tests/aapits/asl/init0058.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0059.asl b/tests/aapits/asl/init0059.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0066.asl b/tests/aapits/asl/init0066.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init0121.asl b/tests/aapits/asl/init0121.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/init1065.asl b/tests/aapits/asl/init1065.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0000.asl b/tests/aapits/asl/nmsp0000.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0010.asl b/tests/aapits/asl/nmsp0010.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0011.asl b/tests/aapits/asl/nmsp0011.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0012.asl b/tests/aapits/asl/nmsp0012.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0013.asl b/tests/aapits/asl/nmsp0013.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0014.asl b/tests/aapits/asl/nmsp0014.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0015.asl b/tests/aapits/asl/nmsp0015.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0016.asl b/tests/aapits/asl/nmsp0016.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0017.asl b/tests/aapits/asl/nmsp0017.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0018.asl b/tests/aapits/asl/nmsp0018.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0019.asl b/tests/aapits/asl/nmsp0019.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0020.asl b/tests/aapits/asl/nmsp0020.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0021.asl b/tests/aapits/asl/nmsp0021.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0022.asl b/tests/aapits/asl/nmsp0022.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0023.asl b/tests/aapits/asl/nmsp0023.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0025.asl b/tests/aapits/asl/nmsp0025.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0037.asl b/tests/aapits/asl/nmsp0037.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0038.asl b/tests/aapits/asl/nmsp0038.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0052.asl b/tests/aapits/asl/nmsp0052.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0074.asl b/tests/aapits/asl/nmsp0074.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0089.asl b/tests/aapits/asl/nmsp0089.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/nmsp0126.asl b/tests/aapits/asl/nmsp0126.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/rt0000.asl b/tests/aapits/asl/rt0000.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/rt0035.asl b/tests/aapits/asl/rt0035.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/rt0036.asl b/tests/aapits/asl/rt0036.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/ssdt1.asl b/tests/aapits/asl/ssdt1.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/ssdt2.asl b/tests/aapits/asl/ssdt2.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/ssdt_aux.asl b/tests/aapits/asl/ssdt_aux.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/tblm0037.asl b/tests/aapits/asl/tblm0037.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/tblm0047.asl b/tests/aapits/asl/tblm0047.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/tblm0058.asl b/tests/aapits/asl/tblm0058.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/asl/tblm_aux.asl b/tests/aapits/asl/tblm_aux.asl old mode 100755 new mode 100644 diff --git a/tests/aapits/bin/0_WARNING.HTM b/tests/aapits/bin/0_WARNING.HTM old mode 100755 new mode 100644 diff --git a/tests/aapits/bin/PWD b/tests/aapits/bin/PWD old mode 100755 new mode 100644 diff --git a/tests/aapits/bin/README b/tests/aapits/bin/README old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/AAPITS.xls b/tests/aapits/spec/AAPITS.xls old mode 100755 new mode 100644 Binary files a/tests/aapits/spec/AAPITS.xls and b/tests/aapits/spec/AAPITS.xls differ diff --git a/tests/aapits/spec/AAPITS0.xls b/tests/aapits/spec/AAPITS0.xls old mode 100755 new mode 100644 Binary files a/tests/aapits/spec/AAPITS0.xls and b/tests/aapits/spec/AAPITS0.xls differ diff --git a/tests/aapits/spec/README b/tests/aapits/spec/README old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/concepts.txt b/tests/aapits/spec/concepts.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/fixed.txt b/tests/aapits/spec/fixed.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/general.txt b/tests/aapits/spec/general.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/handlers.txt b/tests/aapits/spec/handlers.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/hardware.txt b/tests/aapits/spec/hardware.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/init.txt b/tests/aapits/spec/init.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/memory.txt b/tests/aapits/spec/memory.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/namespace.txt b/tests/aapits/spec/namespace.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/resource.txt b/tests/aapits/spec/resource.txt old mode 100755 new mode 100644 diff --git a/tests/aapits/spec/table.txt b/tests/aapits/spec/table.txt old mode 100755 new mode 100644 diff --git a/tests/misc/badcode.asl b/tests/misc/badcode.asl index 0363c64..33ce923 100644 --- a/tests/misc/badcode.asl +++ b/tests/misc/badcode.asl @@ -396,5 +396,12 @@ DefinitionBlock ("badcode.aml", "DSDT", 1, "Intel", "Example", 0x00000001) CreateField (RSC3, \DWI1._MIF, 5, MIF) CreateField (RSC3, \DWI1._RNG, 3, RNG2) } + + Method (L100) + { + /* Method Local is set but never used */ + + Store (40, Local0) + } } diff --git a/tests/misc/grammar.aml b/tests/misc/grammar.aml old mode 100755 new mode 100644 index 7ef8a4e..3be7442 Binary files a/tests/misc/grammar.aml and b/tests/misc/grammar.aml differ diff --git a/tests/misc/grammar.dsl b/tests/misc/grammar.dsl deleted file mode 100755 index 883232b..0000000 --- a/tests/misc/grammar.dsl +++ /dev/null @@ -1,9236 +0,0 @@ -/* - * Intel ACPI Component Architecture - * AML/ASL+ Disassembler version 20150515-32 - * Copyright (c) 2000 - 2015 Intel Corporation - * - * Disassembling to symbolic ASL+ operators - * - * Disassembly of grammar.aml, Thu Jun 04 10:01:34 2015 - * - * Original Table Header: - * Signature "DSDT" - * Length 0x0000A9D4 (43476) - * Revision 0x01 **** 32-bit table (V1), no 64-bit math support - * Checksum 0x62 - * OEM ID "Intel" - * OEM Table ID "GRMTEST" - * OEM Revision 0x20090511 (537462033) - * Compiler ID "INTL" - * Compiler Version 0x20150515 (538248469) - */ -DefinitionBlock ("grammar.aml", "DSDT", 1, "Intel", "GRMTEST", 0x20090511) -{ - Device (A1) - { - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0F) - } - - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - Return (Zero) - } - } - - Device (A2) - { - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - Return (Zero) - } - } - - Device (A3) - { - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0F) - } - } - - Device (A4) - { - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (Zero) - } - - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - Return (Zero) - } - } - - Device (IRES) - { - Name (PRT0, ResourceTemplate () - { - IRQ (Edge, ActiveHigh, Exclusive, ) - {3,4,5,6,7,9,10,11,14,15} - StartDependentFn (0x01, 0x01) - { - IRQNoFlags () - {0,1,2} - } - EndDependentFn () - }) - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Debug = "_CRS:" - Debug = PRT0 /* \IRES.PRT0 */ - Return (PRT0) /* \IRES.PRT0 */ - } - - Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings - { - Debug = "_SRS:" - Debug = Arg0 - Return (Zero) - } - } - - Name (_NPK, Package (0x04) - { - 0x1111, - 0x2222, - 0x3333, - 0x4444 - }) - Device (RES) - { - Name (_PRT, Package (0x04) // _PRT: PCI Routing Table - { - Package (0x04) - { - 0x0002FFFF, - Zero, - Zero, - Zero - }, - - Package (0x04) - { - 0x0002FFFF, - One, - Zero, - Zero - }, - - Package (0x04) - { - 0x000AFFFF, - Zero, - Zero, - Zero - }, - - Package (0x04) - { - 0x000BFFFF, - Zero, - Zero, - Zero - } - }) - Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings - { - Name (PRT0, ResourceTemplate () - { - WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, SubDecode, - 0x0000, // Granularity - 0xFFF2, // Range Minimum - 0xFFF3, // Range Maximum - 0x0032, // Translation Offset - 0x0002, // Length - ,, _Y00) - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x00FF, // Range Maximum - 0x0000, // Translation Offset - 0x0100, // Length - ,, ) - WordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5, - 0x0000, // Granularity - 0xA000, // Range Minimum - 0xBFFF, // Range Maximum - 0x0000, // Translation Offset - 0x2000, // Length - ,, ) - IO (Decode16, - 0x0CF8, // Range Minimum - 0x0CFF, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0000, // Range Minimum - 0x0CF7, // Range Maximum - 0x0000, // Translation Offset - 0x0CF8, // Length - ,, , TypeStatic) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, // Granularity - 0x0D00, // Range Minimum - 0xFFFF, // Range Maximum - 0x0000, // Translation Offset - 0xF300, // Length - ,, , TypeStatic) - DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x00000000, // Granularity - 0x00000000, // Range Minimum - 0x00000CF7, // Range Maximum - 0x00000000, // Translation Offset - 0x00000CF8, // Length - ,, , TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, // Granularity - 0x000C8000, // Range Minimum - 0x000EFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00028000, // Length - ,, , AddressRangeMemory, TypeStatic) - DWordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5, - 0x00000000, // Granularity - 0x000C8000, // Range Minimum - 0x000EFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x00028000, // Length - ,, ) - QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0x0000000000000CF7, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000000000CF8, // Length - 0x44, "This is a ResouceSource string", , TypeStatic) - QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0x0000000000000CF7, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000000000CF8, // Length - ,, , TypeStatic) - QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000100000, // Range Minimum - 0x00000000FFDFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x00000000FFD00000, // Length - ,, , AddressRangeMemory, TypeStatic) - QWordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0x0000000000000CF7, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000000000CF8, // Length - ,, ) - ExtendedIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000000000000000, // Granularity - 0x0000000000000000, // Range Minimum - 0x0000000000000CF7, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x0000000000000CF8, // Length - 0x0000000000000000, // Type-Specific Attributes - , TypeStatic) - ExtendedMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x0000000000000000, // Granularity - 0x0000000000100000, // Range Minimum - 0x00000000FFDFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x00000000FFD00000, // Length - 0x0000000000000000, // Type-Specific Attributes - , AddressRangeMemory, TypeStatic) - ExtendedSpace (0xC3, ResourceProducer, PosDecode, MinFixed, MaxFixed, 0xA3, - 0x0000000000000000, // Granularity - 0x0000000000100000, // Range Minimum - 0x00000000FFDFFFFF, // Range Maximum - 0x0000000000000000, // Translation Offset - 0x00000000FFD00000, // Length - 0x0000000000000000, // Type-Specific Attributes - ) - IO (Decode16, - 0x0010, // Range Minimum - 0x0020, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - IO (Decode16, - 0x0090, // Range Minimum - 0x00A0, // Range Maximum - 0x01, // Alignment - 0x10, // Length - ) - FixedIO ( - 0x0061, // Address - 0x01, // Length - ) - IRQNoFlags () - {2} - DMA (Compatibility, BusMaster, Transfer8_16, ) - {4} - DMA (Compatibility, BusMaster, Transfer8, ) - {2,5,7} - Memory32Fixed (ReadWrite, - 0x00100000, // Address Base - 0x00000000, // Address Length - ) - Memory32Fixed (ReadOnly, - 0xFFFE0000, // Address Base - 0x00020000, // Address Length - ) - Memory32 (ReadOnly, - 0x00020000, // Range Minimum - 0xFFFE0000, // Range Maximum - 0x00000004, // Alignment - 0x00000200, // Length - ) - Memory24 (ReadOnly, - 0x1111, // Range Minimum - 0x2222, // Range Maximum - 0x0004, // Alignment - 0x0200, // Length - ) - Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, 0x0E, "\\_SB_.TEST", ) - { - 0x00000E01, - } - Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0x06, "xxxx", ) - { - 0x00000601, - 0x00000003, - 0x00000002, - 0x00000001, - } - Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive, ,, ) - { - 0xFFFF0000, - 0x00000003, - 0x00000002, - 0x00000001, - 0x00000005, - 0x00000007, - 0x00000009, - } - VendorShort () // Length = 0x03 - { - 0x01, 0x02, 0x03 /* ... */ - } - VendorLong () // Length = 0x09 - { - /* 0000 */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* ........ */ - /* 0008 */ 0x09 /* . */ - } - Register (SystemIO, - 0x08, // Bit Width - 0x00, // Bit Offset - 0x00000000000000B2, // Address - ,_Y01) - Register (SystemMemory, - 0x08, // Bit Width - 0x00, // Bit Offset - 0x00000000000000B2, // Address - ,) - StartDependentFnNoPri () - { - IRQNoFlags () - {0,1,2} - IRQ (Level, ActiveLow, Shared, ) - {3,4,5,6,7,9,10,11,14,15} - } - EndDependentFn () - }) - CreateWordField (PRT0, \RES._CRS._Y00._MIN, BMIN) // _MIN: Minimum Base Address - CreateByteField (PRT0, \RES._CRS._Y01._ASZ, RSIZ) // _ASZ: Access Size - BMIN = 0x03 - Return (PRT0) /* \RES_._CRS.PRT0 */ - } - - Method (_PRS, 0, Serialized) // _PRS: Possible Resource Settings - { - Name (BUF0, ResourceTemplate () - { - StartDependentFn (0x01, 0x02) - { - IO (Decode16, - 0x03D8, // Range Minimum - 0x03F8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - } - StartDependentFn (0x02, 0x01) - { - IO (Decode16, - 0x03D8, // Range Minimum - 0x03E8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {4} - } - StartDependentFn (0x00, 0x02) - { - IO (Decode16, - 0x02E8, // Range Minimum - 0x02F8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {3} - } - StartDependentFn (0x00, 0x02) - { - IO (Decode16, - 0x02D8, // Range Minimum - 0x02E8, // Range Maximum - 0x01, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {3} - } - StartDependentFn (0x02, 0x00) - { - IO (Decode16, - 0x0100, // Range Minimum - 0x03F8, // Range Maximum - 0x08, // Alignment - 0x08, // Length - ) - IRQNoFlags () - {1,3,4,5,6,7,8,10,11,12,13,14,15} - } - EndDependentFn () - }) - Return (BUF0) /* \RES_._PRS.BUF0 */ - } - - Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings - { - Return (Zero) - } - } - - Name (_S0, Package (0x04) // _S0_: S0 System State - { - Zero, - Zero, - Zero, - Zero - }) - Name (_S3, Package (0x04) // _S3_: S3 System State - { - 0x05, - 0x05, - Zero, - Zero - }) - Name (_S4, Package (0x04) // _S4_: S4 System State - { - 0x06, - 0x06, - Zero, - Zero - }) - Name (_S5, Package (0x04) // _S5_: S5 System State - { - 0x07, - 0x07, - Zero, - Zero - }) - Name (SIZE, Zero) - OperationRegion (MYOP, 0x80, 0xFD60, 0x06) - Field (MYOP, ByteAcc, NoLock, Preserve) - { - MFLD, 8 - } - - Method (TCOP, 0, Serialized) - { - Name (_STR, Unicode ("test")) // _STR: Description String - MFLD = 0x04 - Local0 = MFLD /* \MFLD */ - } - - Name (ERRS, Zero) - Name (ESC1, "abcdefghijklmn") - Name (ESC2, "abcdefghijklmn") - Name (ESC3, "abc\a\bdef\f\n\r\t\v\x03ffff\x1A") - Name (CRSA, ResourceTemplate () - { - WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, - 0x0000, // Granularity - 0x0019, // Range Minimum - 0x001D, // Range Maximum - 0x0000, // Translation Offset - 0x0005, // Length - ,, ) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, NonISAOnlyRanges, - 0x0000, // Granularity - 0xC000, // Range Minimum - 0xCFFF, // Range Maximum - 0x0000, // Translation Offset - 0x1000, // Length - ,, , TypeStatic) - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xD8000000, // Range Minimum - 0xDBFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x04000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Name (CRSB, ResourceTemplate () - { - DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite, - 0x00000000, // Granularity - 0xD8000000, // Range Minimum - 0xDBFFFFFF, // Range Maximum - 0x00000000, // Translation Offset - 0x04000000, // Length - ,, , AddressRangeMemory, TypeStatic) - }) - Name (CRSC, ResourceTemplate () - { - VendorShort () // Length = 0x03 - { - 0x01, 0x02, 0x03 /* ... */ - } - }) - Name (CRSD, ResourceTemplate () - { - VendorLong () // Length = 0x09 - { - /* 0000 */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, /* ........ */ - /* 0008 */ 0x09 /* . */ - } - }) - Name (CRSE, ResourceTemplate () - { - IRQNoFlags () - {3,4,10,11} - IRQNoFlags () - {3,4,10,11} - }) - Name (CRSR, Buffer ((SizeOf (CRSA) + SizeOf (CRSB))) {}) - Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings - { - Return (CRSR) /* \CRSR */ - } - - Scope (\) - { - Name (BXXX, Ones) - } - - Name (LANS, Zero) - PowerResource (LANP, 0x01, 0x0000) - { - Method (_STA, 0, NotSerialized) // _STA: Status - { - If (((LANS & 0x30) == 0x30)) - { - Return (One) - } - Else - { - Return (Zero) - } - } - - Method (_ON, 0, NotSerialized) // _ON_: Power On - { - If (!_STA ()) - { - LANS = 0x30 - } - } - - Method (_OFF, 0, NotSerialized) // _OFF: Power Off - { - If (_STA ()) - { - LANS = Zero - } - } - } - - Method (RCIV, 1, NotSerialized) - { - Debug = Arg0 - If ((Arg0 == Zero)) - { - Return (Zero) - } - - RCIV ((Arg0 - One)) - } - - Method (RTOP, 0, NotSerialized) - { - RCIV (0x64) - } - - Scope (_PR) - { - Processor (CPU0, 0x00, 0xFFFFFFFF, 0x00) {} - } - - Name (B1TP, Ones) - Name (B2TP, Ones) - Name (ADPS, Ones) - Name (B1PS, Ones) - Name (B1RS, Ones) - Name (B1CS, Ones) - Name (B2PS, Ones) - Name (B2RS, Ones) - Name (B2CS, Ones) - Name (B1DC, 0x0BB8) - Name (B2DC, 0x0A28) - Name (B1LF, 0x0BB8) - Name (B2LF, 0x0A28) - Name (BPIF, Zero) - Name (PBLL, Zero) - Name (RBIF, Package (0x0D) - { - One, - 0x0898, - 0x0898, - One, - 0x2A30, - Zero, - Zero, - One, - One, - "CA54200-5003/5", - "1", - "LION", - "Fujitsu" - }) - Method (SMWE, 4, NotSerialized) - { - Return (Ones) - } - - Method (SMRE, 4, NotSerialized) - { - Return (Ones) - } - - Scope (_SB) - { - Name (SBUF, Buffer (0x80) {}) - CreateBitField (SBUF, 0x03, BITY) - CreateByteField (SBUF, One, BYTY) - CreateWordField (SBUF, 0x02, WRDZ) - CreateDWordField (SBUF, 0x04, DWDZ) - CreateQWordField (SBUF, 0x08, QWDZ) - CreateField (SBUF, 0x80, 0x0C, FLDZ) - CreateField (SBUF, 0x94, 0x60, FLDY) - CreateField (SBUF, 0x94, 0x60, FLDW) - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - CreateField (SBUF, 0x94, 0x60, FLDV) - } - - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings - { - Name (PRT0, ResourceTemplate () - { - WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, SubDecode, - 0x0000, // Granularity - 0xFFF1, // Range Minimum - 0xFFF2, // Range Maximum - 0x0032, // Translation Offset - 0x0002, // Length - ,, _Y02) - }) - CreateWordField (PRT0, \_SB.PCI0._CRS._Y02._MIN, BMIN) // _MIN: Minimum Base Address - BMIN = 0x03 - Return (PRT0) /* \_SB_.PCI0._CRS.PRT0 */ - } - - Method (_SRS, 0, NotSerialized) // _SRS: Set Resource Settings - { - Return (Zero) - } - - Device (EIO) - { - OperationRegion (FJIO, SystemIO, 0xFD60, 0x06) - Field (FJIO, ByteAcc, NoLock, Preserve) - { - GIDX, 8, - GDTA, 8, - PIDX, 8, - PDTA, 8, - SIDX, 8, - SDTA, 8 - } - - IndexField (GIDX, GDTA, ByteAcc, NoLock, Preserve) - { - Offset (0x02), - , 5, - VGAS, 2, - Offset (0x04), - , 4, - DCKE, 1, - Offset (0x05), - , 6, - ACPW, 1, - Offset (0x0A), - B1P, 1, - B2P, 1, - B1C, 1, - B2C, 1, - B1ER, 1, - B2ER, 1, - Offset (0x0B), - B1CP, 8, - B2CP, 8, - BCP, 8, - B1VH, 8, - B1VL, 8, - B2VH, 8, - B2VL, 8, - B1TM, 8, - B2TM, 8, - B1CH, 8, - B1CL, 8, - B2CH, 8, - B2CL, 8 - } - } - } - } - - Method (RDBT, 3, Serialized) - { - Local1 = 0x1FFF - If (Arg0) - { - Local1 = 0x2FFF - } - - Local2 = 0x18 - If (Arg1) - { - Local2 = 0x10 - } - - If (!SMRE (0x09, 0x15, One, RefOf (Local0))) - { - If (!SMWE (0x08, 0x14, One, Local1)) - { - If (!SMRE (0x09, 0x17, Local2, RefOf (Local3))) - { - Arg2 = Local1 - } - } - - Local0 |= 0x0FFF - SMWE (0x08, 0x14, One, Local0) - } - } - - Method (MKWD, 2, NotSerialized) - { - If ((Arg1 & 0x80)) - { - Local0 = (0xFFFF0000 | Arg0) - Local0 |= (Arg1 << 0x08) - Local0 = (Zero - Local0) - } - Else - { - Local0 = Arg0 - Local0 |= (Arg1 << 0x08) - } - - Return (Local0) - } - - Device (CMB1) - { - Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Alias (\_SB.PCI0.EIO.B1P, \_SB.PCI0.XXXX) - Alias (\_SB.PCI0.EIO.B1P, B1P) - Alias (\_SB.PCI0.EIO.B1C, B1C) - Alias (\_SB.PCI0.EIO.B1CH, B1CH) - Alias (\_SB.PCI0.EIO.B1CL, B1CL) - Alias (\_SB.PCI0.EIO.B1VH, B1VH) - Alias (\_SB.PCI0.EIO.B1VL, B1VL) - Alias (\_SB.PCI0.EIO.B1CP, B1CP) - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - B1PS = B1P /* \CMB1.B1P_ */ - B1RS = B1CP /* \CMB1.B1CP */ - B1CS = B1C /* \CMB1.B1C_ */ - } - - Method (_BIF, 0, NotSerialized) // _BIF: Battery Information - { - RDBT (Zero, Zero, RefOf (B1DC)) - RDBT (Zero, One, RefOf (B1LF)) - Index (RBIF, One) = B1DC /* \B1DC */ - Index (RBIF, 0x02) = B1LF /* \B1LF */ - Index (RBIF, 0x09) = "CA54200-5003/5" - Index (RBIF, 0x0A) = "1" - Return (RBIF) /* \RBIF */ - } - - Method (_BST, 0, Serialized) // _BST: Battery Status - { - _INI () - Local0 = Zero - If ((B1P && !B1C)) - { - Local0 |= One - } - - If ((B1P && B1C)) - { - Local0 |= 0x02 - } - - If ((B1CP <= One)) - { - Local0 |= 0x04 - } - - Local1 = MKWD (B1CL, B1CH) - Local2 = (((B1CP * B1LF) + 0x63) / 0x64) - Local3 = MKWD (B1VL, B1VH) - Name (STAT, Package (0x04) {}) - Index (STAT, Zero) = Local0 - Index (STAT, One) = Local1 - Index (STAT, 0x02) = Local2 - Index (STAT, 0x03) = Local3 - If (!BPIF) - { - BPIF = One - } - - Return (STAT) /* \CMB1._BST.STAT */ - } - } - - Device (DEV1) - { - } - - Scope (_TZ) - { - ThermalZone (TZ1) - { - Name (_PSL, Package (0x01) // _PSL: Passive List - { - \_PR.CPU0 - }) - } - } - - Method (TZ2, 0, Serialized) - { - Name (_PSL, Package (0x01) // _PSL: Passive List - { - \_PR.CPU0 - }) - Return (_PSL) /* \TZ2_._PSL */ - } - - ThermalZone (THM1) - { - } - - Method (NOTI, 0, NotSerialized) - { - Notify (DEV1, Zero) // Bus Check - Notify (THM1, Zero) // Bus Check - Notify (\_PR.CPU0, Zero) // Bus Check - } - - Method (_ERR, 2, NotSerialized) - { - ERRS++ - Debug = "Run-time exception:" - Debug = Arg0 - Debug = Arg1 - Return (Zero) - } - - Method (DIV0, 0, NotSerialized) - { - Local0 = One - Local1 = Zero - Divide (Local0, Local1, Local3) - Debug = "DIV0 - noabort" - } - - Method (ERR, 1, NotSerialized) - { - If ((Arg0 == Zero)) - { - Debug = "+*+*+*+* MTHD_ERROR: Results not equal!" - } - - If ((Arg0 == One)) - { - Debug = "+*+*+*+* MTHD_ERROR: Numeric result is incorrect!" - } - - If ((Arg0 == 0x02)) - { - Debug = "+*+*+*+* MTHD_ERROR: Operand was clobbered!" - } - - Notify (DEV1, Arg0) - ERRS++ - } - - Method (R226, 2, NotSerialized) - { - } - - Method (R225, 2, NotSerialized) - { - R226 (Arg0, Arg1) - } - - Method (R224, 2, NotSerialized) - { - R225 (Arg1, Arg0) - } - - Method (R223, 2, NotSerialized) - { - R224 (Arg0, Arg1) - } - - Method (R222, 2, NotSerialized) - { - R223 (Arg1, Arg0) - } - - Method (R111, 0, NotSerialized) - { - Local0 = 0x01010101 - R222 (0xABAB, Local0) - Local1 = Local0 - } - - Method (MAIN, 0, NotSerialized) - { - Local0 = NUM1 () - \CMB1._BST () - RDBT (One, 0x02, 0x03) - OBJ1 (One) - OBJ2 (0x02) - CHEK () - RETZ () - BITZ () - LOGS () - REFS () - COND () - TZ2 () - Local0 = \IFEL.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \NOSV.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \IDXF.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.NSTL.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \RTBF.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.RTLV.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.RETP.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \WHLR.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \ANDO.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \BRKP.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \ADSU.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \INDC.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \LOPS.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \FDSO.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \MLDV.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \NBIT.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \SHFT.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \XORD.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \CRBF.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \IDX4.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \EVNT.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \SZLV.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.BYTF.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \DWDF.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \DVAX.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \IDX6.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \IDX5.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.IDX0.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.IDX3.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \IDX7.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \MTCH.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \WHLB.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.IDX2.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \SIZO.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - Local0 = \_SB.SMIS.TEST () - If ((Local0 > Zero)) - { - ERR (One) - Return (Local0) - } - - If ((ERRS > Zero)) - { - Debug = "****** There were errors during the execution of the test ******" - } - - Return (Zero) - } - - Method (OBJ1, 1, Serialized) - { - Local0 = 0x03 - Name (BUFR, Buffer (Local0) {}) - Name (BUF1, Buffer (0x04) - { - 0x01, 0x02, 0x03, 0x04 /* .... */ - }) - Name (BUF2, Buffer (0x04) {}) - BUF2 = BUF1 /* \OBJ1.BUF1 */ - Mutex (MTX1, 0x04) - Alias (MTX1, MTX2) - } - - Mutex (MTXT, 0x00) - Mutex (MTXX, 0x00) - Method (FLDS, 0, Serialized) - { - Debug = "++++++++ Creating BufferFields" - Name (BUF2, Buffer (0x80) {}) - CreateBitField (BUF2, 0x03, BIT2) - CreateByteField (BUF2, One, BYT2) - CreateWordField (BUF2, 0x02, WRD2) - CreateDWordField (BUF2, 0x04, DWD2) - CreateQWordField (BUF2, 0x08, QWD2) - CreateField (BUF2, 0x80, 0x0C, FLD2) - CreateField (BUF2, 0x94, 0x60, FLD3) - BIT2 = One - Local0 = BIT2 /* \FLDS.BIT2 */ - If ((Local0 != One)) - { - ERR (One) - } - Else - { - Local0 = DerefOf (Index (BUF2, Zero)) - If ((Local0 != 0x08)) - { - ERR (One) - } - Else - { - Debug = "++++++++ Bit BufferField I/O PASS" - } - } - - BYT2 = 0x1A - Local0 = BYT2 /* \FLDS.BYT2 */ - If ((Local0 != 0x1A)) - { - ERR (One) - } - Else - { - Debug = "++++++++ Byte BufferField I/O PASS" - } - - WRD2 = 0x1234 - Local0 = WRD2 /* \FLDS.WRD2 */ - If ((Local0 != 0x1234)) - { - ERR (One) - } - Else - { - Debug = "++++++++ Word BufferField I/O PASS" - } - - FLD2 = 0x0123 - Local0 = FLD2 /* \FLDS.FLD2 */ - If ((Local0 != 0x0123)) - { - ERR (One) - } - Else - { - Debug = "++++++++ 12-bit BufferField I/O PASS" - } - - DWD2 = 0x12345678 - Local0 = DWD2 /* \FLDS.DWD2 */ - If ((Local0 != 0x12345678)) - { - ERR (One) - } - Else - { - Debug = "++++++++ Dword BufferField I/O PASS" - } - - QWD2 = 0x1234567887654321 - Local0 = QWD2 /* \FLDS.QWD2 */ - If ((Local0 != 0x1234567887654321)) - { - ERR (One) - } - Else - { - Debug = "++++++++ Qword BufferField I/O PASS" - } - } - - Method (FLDX, 0, Serialized) - { - Field (\_SB.MEM.SMEM, AnyAcc, NoLock, Preserve) - { - SMD0, 32, - SMD1, 32, - SMD2, 32, - SMD3, 32 - } - - Field (\_SB.MEM.SMEM, AnyAcc, NoLock, Preserve) - { - SME0, 69, - SME1, 97 - } - } - - Method (MTX, 0, NotSerialized) - { - Acquire (MTXT, 0xFFFF) - Acquire (MTXX, 0xFFFF) - Debug = "++++++++ Acquiring Mutex MTX2" - Acquire (_GL, 0xFFFF) - Debug = "++++++++ Releasing Mutex MTX2" - Release (_GL) - } - - Method (OBJ2, 1, Serialized) - { - Debug = "++++++++ Creating Buffer BUFO" - Name (BUFO, Buffer (0x20) {}) - Debug = "++++++++ Creating OpRegion OPR2" - OperationRegion (OPR2, SystemMemory, Arg0, 0x0100) - Debug = "++++++++ Creating Field(s) in OpRegion OPR2" - Field (OPR2, ByteAcc, NoLock, Preserve) - { - IDX2, 8, - DAT2, 8, - BNK2, 4 - } - - Debug = "++++++++ Creating BankField BNK2 in OpRegion OPR2" - BankField (OPR2, BNK2, Zero, ByteAcc, NoLock, Preserve) - { - FET0, 4, - FET1, 3 - } - - Debug = "++++++++ Creating IndexField" - IndexField (IDX2, DAT2, ByteAcc, NoLock, Preserve) - { - FET2, 4, - FET3, 3 - } - - Debug = "++++++++ SizeOf (BUFO)" - SizeOf (BUFO) - Debug = "++++++++ Store (SizeOf (BUFO), Local0)" - Local0 = SizeOf (BUFO) - Debug = "++++++++ Concatenate (\"abd\", \"def\", Local0)" - Concatenate ("abd", "def", Local0) - Debug = Local0 - Debug = "++++++++ Concatenate (\"abd\", 0x7B, Local0)" - Concatenate ("abd", 0x7B, Local0) - Debug = Local0 - Debug = "++++++++ Creating Event EVT2" - Event (EVT2) - Debug = "++++++++ Creating Mutex MTX2" - Mutex (MTX2, 0x00) - Debug = "++++++++ Creating Alias MTXA to MTX2" - Alias (MTX2, MTXA) - Debug = "++++++++ Acquiring Mutex MTX2" - Acquire (MTX2, 0xFFFF) - Debug = "++++++++ Acquiring Mutex MTX2 (2nd acquire)" - Acquire (MTX2, 0x0001) - Debug = "++++++++ Releasing Mutex MTX2" - Release (MTX2) - Debug = "++++++++ Signalling Event EVT2" - Signal (EVT2) - Debug = "++++++++ Resetting Event EVT2" - Reset (EVT2) - Debug = "++++++++ Signalling Event EVT2" - Signal (EVT2) - Debug = "++++++++ Waiting Event EVT2" - Wait (EVT2, 0xFFFF) - Debug = "++++++++ Sleep" - Sleep (0x64) - Debug = "++++++++ Stall" - Stall (0xFE) - Debug = "++++++++ NoOperation" - Noop - Debug = "++++++++ Return from Method OBJ2" - Return (0x04) - } - - Method (NUM1, 0, NotSerialized) - { - Debug = "++++++++ Add (0x12345678, 0x11111111, Local0)" - Local0 = (0x12345678 + 0x11111111) - Debug = "++++++++ Store (Add (0x12345678, 0x11111111), Local1)" - Local1 = (0x12345678 + 0x11111111) - Debug = "++++++++ Checking result from ADD" - If ((Local0 != Local1)) - { - ERR (Zero) - } - - Debug = "++++++++ Subtract (0x87654321, 0x11111111, Local4)" - Local4 = (0x87654321 - 0x11111111) - Debug = "++++++++ Store (Subtract (0x87654321, 0x11111111), Local5)" - Local5 = (0x87654321 - 0x11111111) - Debug = "++++++++ Checking result from SUBTRACT" - If ((Local4 != Local5)) - { - ERR (Zero) - } - - Debug = "++++++++ Multiply (33, 10, Local6)" - Local6 = (0x21 * 0x0A) - Debug = "++++++++ Store (Multiply (33, 10), Local7)" - Local7 = (0x21 * 0x0A) - Debug = "++++++++ Checking result from MULTIPLY" - If ((Local6 != Local7)) - { - ERR (Zero) - } - - Debug = "++++++++ Divide (100, 9, Local1, Local2)" - Divide (0x64, 0x09, Local1, Local2) - Debug = "++++++++ Store (Divide (100, 9), Local3)" - Local3 = (0x64 / 0x09) - Debug = "++++++++ Checking (quotient) result from DIVIDE" - If ((Local2 != Local3)) - { - ERR (Zero) - } - - Debug = "++++++++ Increment (Local0)" - Local0 = One - Local1 = 0x02 - Local0++ - Debug = "++++++++ Checking result from INCREMENT" - If ((Local0 != Local1)) - { - ERR (Zero) - } - - Debug = "++++++++ Decrement (Local0)" - Local0 = 0x02 - Local1 = One - Local0-- - Debug = "++++++++ Checking result from DECREMENT" - If ((Local0 != Local1)) - { - ERR (Zero) - } - - Debug = "++++++++ ToBCD (0x1234, Local5)" - ToBCD (0x1234, Local5) - Debug = "++++++++ FromBCD (Local5, Local6)" - FromBCD (Local5, Local6) - Debug = "++++++++ Return (Local6)" - Return (Local6) - } - - Method (CHEK, 0, NotSerialized) - { - Local0 = 0x03 - Debug = 0x03 - Debug = Local0 - Local1 = 0x07 - (Local0 + Local1) - If ((Local0 != 0x03)) - { - ERR (0x02) - } - - If ((Local1 != 0x07)) - { - ERR (0x02) - } - - Local2 = (Local0 + Local1) - If ((Local0 != 0x03)) - { - ERR (0x02) - } - - If ((Local1 != 0x07)) - { - ERR (0x02) - } - } - - Method (RET1, 0, NotSerialized) - { - Local0 = 0x03 - Return (Local0) - } - - Method (RET2, 0, NotSerialized) - { - Return (RET1 ()) - } - - Method (RETZ, 0, NotSerialized) - { - RET2 () - } - - Method (BITZ, 0, NotSerialized) - { - Debug = "++++++++ FindSetLeftBit (0x00100100, Local0)" - FindSetLeftBit (0x00100100, Local0) - If ((Local0 != 0x15)) - { - ERR (One) - } - - Debug = "++++++++ FindSetRightBit (0x00100100, Local1)" - FindSetRightBit (0x00100100, Local1) - If ((Local1 != 0x09)) - { - ERR (One) - } - - Debug = "++++++++ And (0xF0F0F0F0, 0x11111111, Local2)" - Local2 = (0xF0F0F0F0 & 0x11111111) - If ((Local2 != 0x10101010)) - { - ERR (One) - } - - Debug = "++++++++ NAnd (0xF0F0F0F0, 0x11111111, Local3)" - NAnd (0xF0F0F0F0, 0x11111111, Local3) - If ((Local3 != 0xEFEFEFEF)) - { - ERR (One) - } - - Debug = "++++++++ Or (0x11111111, 0x22222222, Local4)" - Local4 = (0x11111111 | 0x22222222) - If ((Local4 != 0x33333333)) - { - ERR (One) - } - - Debug = "++++++++ NOr (0x11111111, 0x22222222, Local5)" - NOr (0x11111111, 0x22222222, Local5) - If ((Local5 != 0xCCCCCCCC)) - { - ERR (One) - } - - Debug = "++++++++ XOr (0x11113333, 0x22222222, Local6)" - Local6 = (0x11113333 ^ 0x22222222) - If ((Local6 != 0x33331111)) - { - ERR (One) - } - - Debug = "++++++++ ShiftLeft (0x11112222, 2, Local7)" - Local7 = (0x11112222 << 0x02) - If ((Local7 != 0x44448888)) - { - ERR (One) - } - - Debug = "++++++++ ShiftRight (Local7, 2, Local7)" - Local7 >>= 0x02 - If ((Local7 != 0x11112222)) - { - ERR (One) - } - - Debug = "++++++++ Not (Local0, Local1)" - Local0 = 0x22224444 - Local1 = ~Local0 - If ((Local0 != 0x22224444)) - { - ERR (0x02) - } - - If ((Local1 != 0xDDDDBBBB)) - { - ERR (One) - } - - Return (Local7) - } - - Method (LOGS, 0, NotSerialized) - { - Debug = "++++++++ Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)" - Local0 = (Ones && 0x11111111) - Debug = "++++++++ Store (LEqual (0xFFFFFFFF, 0x11111111), Local)" - Local1 = (Ones == 0x11111111) - Debug = "++++++++ Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)" - Local2 = (Ones > 0x11111111) - Debug = "++++++++ Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)" - Local3 = (Ones >= 0x11111111) - Debug = "++++++++ Store (LLess (0xFFFFFFFF, 0x11111111), Local4)" - Local4 = (Ones < 0x11111111) - Debug = "++++++++ Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)" - Local5 = (Ones <= 0x11111111) - Debug = "++++++++ Store (LNot (0x31313131), Local6)" - Local6 = 0x1111 - Local7 = !Local6 - If ((Local6 != 0x1111)) - { - ERR (0x02) - } - - If ((Local7 != Zero)) - { - ERR (One) - } - - Debug = "++++++++ Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)" - Local7 = (Ones != 0x11111111) - Debug = "++++++++ Lor (0x0, 0x1)" - If ((Zero || One)) - { - Debug = "+_+_+_+_+ Lor (0x0, 0x1) returned TRUE" - } - - Return (Local7) - } - - Method (COND, 0, NotSerialized) - { - Debug = "++++++++ Store (0x4, Local0)" - Local0 = 0x04 - Debug = "++++++++ While (Local0)" - While (Local0) - { - Debug = "++++++++ Decrement (Local0)" - Local0-- - } - - Debug = "++++++++ Store (0x3, Local6)" - Local6 = 0x03 - Debug = "++++++++ While (Subtract (Local6, 1))" - While ((Local6 - One)) - { - Debug = "++++++++ Decrement (Local6)" - Local6-- - } - - Debug = "++++++++ [LVL1] If (LGreater (0x2, 0x1))" - If ((0x02 > One)) - { - Debug = "++++++++ [LVL2] If (LEqual (0x11111111, 0x22222222))" - If ((0x11111111 == 0x22222222)) - { - Debug = "++++++++ ERROR: If (LEqual (0x11111111, 0x22222222)) returned TRUE" - } - Else - { - Debug = "++++++++ [LVL3] If (LNot (0x0))" - If (!Zero) - { - Debug = "++++++++ [LVL4] If (LAnd (0xEEEEEEEE, 0x2))" - If ((0xEEEEEEEE && 0x02)) - { - Debug = "++++++++ [LVL5] If (LLess (0x44444444, 0x3))" - If ((0x44444444 < 0x03)) - { - Debug = "++++++++ ERROR: If (LLess (0x44444444, 0x3)) returned TRUE" - } - Else - { - Debug = "++++++++ Exiting from nested IF/ELSE statements" - } - } - } - } - } - - Debug = "++++++++ [LVL1] If (LGreater (0x2, 0x1))" - If ((0x02 > One)) - { - Debug = "++++++++ [LVL2] If (LEqual (0x11111111, 0x22222222))" - If ((0x11111111 == 0x22222222)) - { - Debug = "++++++++ ERROR: If (LEqual (0x11111111, 0x22222222)) returned TRUE" - } - Else - { - Debug = "++++++++ [LVL3] If (LNot (0x0))" - If (!Zero) - { - Debug = "++++++++ [LVL4] If (LAnd (0xEEEEEEEE, 0x2))" - If ((0xEEEEEEEE && 0x02)) - { - Debug = "++++++++ [LVL5] If (LLess (0x44444444, 0x3))" - If ((0x44444444 < 0x03)) - { - Debug = "++++++++ ERROR: If (LLess (0x44444444, 0x3)) returned TRUE" - } - Else - { - Debug = "++++++++ Returning from nested IF/ELSE statements" - Return (Local6) - } - } - } - } - } - } - - Method (REFS, 0, Serialized) - { - Name (BBUF, Buffer (0x08) - { - 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7 /* ........ */ - }) - Name (NEST, Package (0x02) - { - Package (0x06) - { - One, - 0x02, - 0x03, - 0x04, - 0x05, - 0x06 - }, - - Package (0x06) - { - 0x11, - 0x12, - 0x12, - 0x14, - 0x15, - 0x16 - } - }) - Local5 = RefOf (MAIN) - Local1 = CondRefOf (ABCD, Local0) - If ((Local1 != Zero)) - { - ERR (0x02) - } - - Local1 = CondRefOf (BBUF, Local0) - If ((Local1 != Ones)) - { - ERR (0x02) - } - - Local6 = DerefOf (Index (BBUF, 0x03)) - If ((Local6 != 0xB3)) - { - ERR (0x02) - } - - Local0 = DerefOf (Index (DerefOf (Index (NEST, One)), 0x03)) - If ((Local0 != 0x14)) - { - ERR (0x02) - } - - Local0 = 0x11223344 - Local1 = RefOf (Local0) - Local2 = DerefOf (Local1) - If ((Local2 != 0x11223344)) - { - ERR (0x02) - } - } - - Method (INDX, 0, Serialized) - { - Name (STAT, Package (0x04) {}) - Index (STAT, Zero) = 0x44443333 - } - - Device (IFEL) - { - Name (DWRD, One) - Name (RSLT, Zero) - Method (IFNR, 0, NotSerialized) - { - RSLT = DWRD /* \IFEL.DWRD */ - If ((DWRD == One)) - { - RSLT = Zero - } - } - - Method (NINR, 0, NotSerialized) - { - RSLT = Zero - If ((DWRD != One)) - { - RSLT = DWRD /* \IFEL.DWRD */ - } - } - - Method (IENR, 0, NotSerialized) - { - If ((DWRD == One)) - { - RSLT = Zero - } - Else - { - RSLT = DWRD /* \IFEL.DWRD */ - } - } - - Method (ELNR, 0, NotSerialized) - { - If ((DWRD != One)) - { - RSLT = DWRD /* \IFEL.DWRD */ - } - Else - { - RSLT = Zero - } - } - - Method (IFRT, 0, NotSerialized) - { - If ((DWRD == One)) - { - Return (Zero) - } - - Return (DWRD) /* \IFEL.DWRD */ - } - - Method (IERT, 0, NotSerialized) - { - If ((DWRD == One)) - { - Return (Zero) - } - Else - { - Return (DWRD) /* \IFEL.DWRD */ - } - } - - Method (ELRT, 0, NotSerialized) - { - If ((DWRD != One)) - { - Return (DWRD) /* \IFEL.DWRD */ - } - Else - { - Return (Zero) - } - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IfElseOp Test" - IFNR () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - NINR () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - IENR () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - ELNR () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - RSLT = IFRT () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - RSLT = IERT () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - RSLT = ELRT () - If ((RSLT != Zero)) - { - Return (RSLT) /* \IFEL.RSLT */ - } - - Return (Zero) - } - } - - Device (NOSV) - { - Method (TEST, 0, Serialized) - { - Debug = "++++++++ NoSave Test" - Name (WRD, 0x1234) - If ((0x03 & One)) - { - WRD = One - } - Else - { - Return (One) - } - - If ((0x04 & One)) - { - Return (0x02) - } - Else - { - WRD = 0x02 - } - - If (NAnd (0x03, One)) - { - WRD = 0x03 - } - Else - { - Return (0x03) - } - - If (NAnd (Ones, Ones)) - { - Return (0x04) - } - Else - { - WRD = 0x04 - } - - If (NOr (Zero, One)) - { - WRD = 0x05 - } - Else - { - Return (0x05) - } - - If (NOr (0xFFFFFFFE, One)) - { - Return (0x06) - } - Else - { - WRD = 0x06 - } - - If (~One) - { - WRD = 0x07 - } - Else - { - Return (0x07) - } - - If (~Ones) - { - Return (0x08) - } - Else - { - WRD = 0x08 - } - - If ((0x03 | One)) - { - WRD = 0x09 - } - Else - { - Return (0x09) - } - - If ((Zero | Zero)) - { - Return (0x0A) - } - Else - { - WRD = 0x0A - } - - If ((0x03 ^ One)) - { - WRD = 0x0B - } - Else - { - Return (0x0B) - } - - If ((0x03 ^ 0x03)) - { - Return (0x0C) - } - Else - { - WRD = 0x0C - } - - If ((0x03 && 0x03)) - { - WRD = 0x15 - } - Else - { - Return (0x15) - } - - If ((0x03 && Zero)) - { - Return (0x16) - } - Else - { - WRD = 0x16 - } - - If ((Zero && 0x03)) - { - Return (0x17) - } - Else - { - WRD = 0x17 - } - - If ((Zero && Zero)) - { - Return (0x18) - } - Else - { - WRD = 0x18 - } - - If ((0x03 == 0x03)) - { - WRD = 0x1F - } - Else - { - Return (0x1F) - } - - If ((One == 0x03)) - { - Return (0x20) - } - Else - { - WRD = 0x20 - } - - If ((0x03 > One)) - { - WRD = 0x29 - } - Else - { - Return (0x29) - } - - If ((0x04 > 0x04)) - { - Return (0x2A) - } - Else - { - WRD = 0x2A - } - - If ((One > 0x04)) - { - Return (0x2B) - } - Else - { - WRD = 0x2B - } - - If ((0x03 >= One)) - { - WRD = 0x2C - } - Else - { - Return (0x2C) - } - - If ((0x03 >= 0x03)) - { - WRD = 0x2D - } - Else - { - Return (0x2D) - } - - If ((0x03 >= 0x04)) - { - Return (0x2E) - } - Else - { - WRD = 0x2E - } - - If ((One < 0x03)) - { - WRD = 0x33 - } - Else - { - Return (0x33) - } - - If ((0x02 < 0x02)) - { - Return (0x34) - } - Else - { - WRD = 0x34 - } - - If ((0x04 < 0x02)) - { - Return (0x35) - } - Else - { - WRD = 0x35 - } - - If ((One <= 0x03)) - { - WRD = 0x36 - } - Else - { - Return (0x36) - } - - If ((0x02 <= 0x02)) - { - WRD = 0x37 - } - Else - { - Return (0x37) - } - - If ((0x04 <= 0x02)) - { - Return (0x38) - } - Else - { - WRD = 0x38 - } - - If (!Zero) - { - WRD = 0x3D - } - Else - { - Return (0x3D) - } - - If (!One) - { - Return (0x3E) - } - Else - { - WRD = 0x3E - } - - If ((0x03 != 0x03)) - { - Return (0x3F) - } - Else - { - WRD = 0x3F - } - - If ((One != 0x03)) - { - WRD = 0x40 - } - Else - { - Return (0x40) - } - - If ((0x03 || One)) - { - WRD = 0x47 - } - Else - { - Return (0x47) - } - - If ((Zero || One)) - { - WRD = 0x48 - } - Else - { - Return (0x48) - } - - If ((0x03 || Zero)) - { - WRD = 0x49 - } - Else - { - Return (0x49) - } - - If ((Zero || Zero)) - { - Return (0x4A) - } - Else - { - WRD = 0x4A - } - - Return (Zero) - } - } - - Device (IDXF) - { - OperationRegion (SIO, SystemIO, 0x0100, 0x02) - Field (SIO, ByteAcc, NoLock, Preserve) - { - INDX, 8, - DATA, 8 - } - - IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes) - { - AccessAs (ByteAcc, 0x00), - IFE0, 8, - IFE1, 8, - IFE2, 8, - IFE3, 8, - IFE4, 8, - IFE5, 8, - IFE6, 8, - IFE7, 8, - IFE8, 8, - IFE9, 8 - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndxFld Test" - Local0 = IFE0 /* \IDXF.IFE0 */ - Local1 = IFE1 /* \IDXF.IFE1 */ - Local2 = IFE2 /* \IDXF.IFE2 */ - Return (Zero) - } - } - - Scope (_SB) - { - Name (ZER0, Zero) - Name (ZER1, Zero) - Name (ZER2, Zero) - Name (ONE0, One) - Device (NSTL) - { - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ NestdLor Test" - If ((ZER0 || (ZER1 || (ZER2 || ONE0)))) - { - Local0 = Zero - } - Else - { - Local0 = One - } - - Return (Local0) - } - } - } - - Device (RTBF) - { - Method (SUBR, 1, NotSerialized) - { - Return (Arg0) - } - - Method (RBUF, 0, Serialized) - { - Name (ABUF, Buffer (0x11) - { - "ARBITRARY_BUFFER" - }) - Local0 = ABUF /* \RTBF.RBUF.ABUF */ - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (One) - } - - Local0 = SUBR (ABUF) - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x02) - } - - Local1 = 0x05 - Name (BUFR, Buffer (Local1) {}) - Local0 = SUBR (BUFR) - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x03) - } - - Local0 = BUFR /* \RTBF.RBUF.BUFR */ - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x04) - } - - Return (Local0) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ RetBuf Test" - Local0 = RBUF () - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x0A) - } - Else - { - Return (Zero) - } - } - } - - Device (GPE2) - { - Method (_L03, 0, NotSerialized) // _Lxx: Level-Triggered GPE - { - Debug = "Method GPE2._L03 invoked" - Return (Zero) - } - - Method (_E05, 0, NotSerialized) // _Exx: Edge-Triggered GPE - { - Debug = "Method GPE2._E05 invoked" - Return (Zero) - } - } - - Device (PRW2) - { - Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake - { - Package (0x02) - { - GPE2, - 0x05 - }, - - 0x03 - }) - } - - Scope (_GPE) - { - Name (ACST, 0xFF) - Method (_L08, 0, NotSerialized) // _Lxx: Level-Triggered GPE - { - Debug = "Method _GPE._L08 invoked" - Return (Zero) - } - - Method (_E09, 0, NotSerialized) // _Exx: Edge-Triggered GPE - { - Debug = "Method _GPE._E09 invoked" - Return (Zero) - } - - Method (_E11, 0, NotSerialized) // _Exx: Edge-Triggered GPE - { - Debug = "Method _GPE._E11 invoked" - Notify (PRW1, 0x02) // Device Wake - } - - Method (_L22, 0, NotSerialized) // _Lxx: Level-Triggered GPE - { - Debug = "Method _GPE._L22 invoked" - Return (Zero) - } - - Method (_L33, 0, NotSerialized) // _Lxx: Level-Triggered GPE - { - Debug = "Method _GPE._L33 invoked" - Return (Zero) - } - - Method (_E64, 0, NotSerialized) // _Exx: Edge-Triggered GPE - { - Debug = "Method _GPE._E64 invoked" - Return (Zero) - } - } - - Device (PRW1) - { - Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake - { - 0x11, - 0x03 - }) - } - - Device (PWRB) - { - Name (_HID, EisaId ("PNP0C0C") /* Power Button Device */) // _HID: Hardware ID - Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake - { - 0x33, - 0x03 - }) - } - - Scope (_SB) - { - Device (ACAD) - { - Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID - Name (_PCL, Package (0x01) // _PCL: Power Consumer List - { - _SB - }) - OperationRegion (AREG, SystemIO, 0x0372, 0x02) - Field (AREG, ByteAcc, NoLock, Preserve) - { - AIDX, 8, - ADAT, 8 - } - - IndexField (AIDX, ADAT, ByteAcc, NoLock, Preserve) - { - , 1, - ACIN, 1, - , 2, - CHAG, 1, - Offset (0x01), - , 7, - ABAT, 1 - } - - Method (_PSR, 0, NotSerialized) // _PSR: Power Source - { - Local0 = \_GPE.ACST - Local1 = ACIN /* \_SB_.ACAD.ACIN */ - If ((\_GPE.ACST != Local1)) - { - \_GPE.ACST = Local1 - } - - Return (Local0) - } - - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0F) - } - - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - \_GPE.ACST = ACIN /* \_SB_.ACAD.ACIN */ - } - } - - Method (DIS, 1, NotSerialized) - { - Local0 = Arg0 - } - - Device (RTLV) - { - Method (_DCK, 1, NotSerialized) // _DCK: Dock Present - { - If (Arg0) - { - Local0 = 0x87 - If (Local0) - { - DIS (0x23) - Return (One) - } - - Return (Zero) - } - Else - { - Local0 = Arg0 - If (Local0) - { - DIS (0x23) - Return (One) - } - - Return (Zero) - } - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ RetLVal Test" - Local0 = ^^ACAD._PSR () - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (One) - } - - Local2 = _DCK (One) - Local3 = ObjectType (Local2) - If ((Local3 != One)) - { - Return (0x02) - } - - If ((Local2 != One)) - { - Return (0x03) - } - - Return (Zero) - } - } - } - - Scope (_SB) - { - Device (LNKA) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - } - - Device (LNKB) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x02) // _UID: Unique ID - } - - Device (LNKC) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x03) // _UID: Unique ID - } - - Device (LNKD) - { - Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID - Name (_UID, 0x04) // _UID: Unique ID - } - - Device (PCI1) - { - Name (_HID, "PNP0A03" /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_CRS, Zero) // _CRS: Current Resource Settings - Name (_PRT, Package (0x0C) // _PRT: PCI Routing Table - { - Package (0x04) - { - 0x0004FFFF, - Zero, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - One, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x02, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0004FFFF, - 0x03, - LNKD, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - Zero, - LNKB, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - One, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0005FFFF, - 0x02, - LNKD, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - Zero, - LNKC, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - One, - LNKD, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x02, - LNKA, - Zero - }, - - Package (0x04) - { - 0x0006FFFF, - 0x03, - LNKB, - Zero - } - }) - Device (PX40) - { - Name (_ADR, 0x00070000) // _ADR: Address - } - } - - Device (RETP) - { - Method (RPKG, 0, NotSerialized) - { - Local0 = ^^PCI1._PRT /* \_SB_.PCI1._PRT */ - Return (Local0) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ RetPkg Test" - Local0 = RPKG () - Local1 = ObjectType (Local0) - If ((Local1 != 0x04)) - { - Return (One) - } - Else - { - Return (Zero) - } - } - } - } - - Device (WHLR) - { - Name (LCNT, Zero) - Method (WIR, 0, NotSerialized) - { - While ((LCNT < 0x04)) - { - If ((LCNT == 0x02)) - { - Return (Zero) - } - - LCNT++ - } - - Return (LCNT) /* \WHLR.LCNT */ - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ WhileRet Test" - Local0 = WIR () - Return (Local0) - } - } - - Device (ANDO) - { - OperationRegion (TMEM, SystemMemory, 0xC4, 0x02) - Field (TMEM, ByteAcc, NoLock, Preserve) - { - , 3, - TOUD, 13 - } - - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Name (BYT1, 0xFF) - Name (BYT2, 0xFF) - Name (BRSL, Zero) - Name (WRD1, 0xFFFF) - Name (WRD2, 0xFFFF) - Name (WRSL, Zero) - Name (DWD1, Ones) - Name (DWD2, Ones) - Name (DRSL, Zero) - Method (ANDP, 0, NotSerialized) - { - BRSL = (BYT1 & BYT2) /* \ANDO.BYT2 */ - If ((BRSL != 0xFF)) - { - Return (One) - } - - WRSL = (WRD1 & WRD2) /* \ANDO.WRD2 */ - If ((WRSL != 0xFFFF)) - { - Return (One) - } - - DRSL = (DWD1 & DWD2) /* \ANDO.DWD2 */ - If ((DRSL != Ones)) - { - Return (One) - } - - BYT1 = Zero - BYT2 = Zero - BRSL = Zero - BRSL = (BYT1 & BYT2) /* \ANDO.BYT2 */ - If ((BRSL != Zero)) - { - Return (One) - } - - WRD1 = Zero - WRD2 = Zero - WRSL = Zero - WRSL = (WRD1 & WRD2) /* \ANDO.WRD2 */ - If ((WRSL != Zero)) - { - Return (One) - } - - DWD1 = Zero - DWD2 = Zero - DRSL = Zero - DRSL = (DWD1 & DWD2) /* \ANDO.DWD2 */ - If ((DRSL != Zero)) - { - Return (One) - } - - BYT1 = 0x55 - BYT2 = 0xAA - BRSL = Zero - BRSL = (BYT1 & BYT2) /* \ANDO.BYT2 */ - If ((BRSL != Zero)) - { - Return (One) - } - - WRD1 = 0x5555 - WRD2 = 0xAAAA - WRSL = Zero - WRSL = (WRD1 & WRD2) /* \ANDO.WRD2 */ - If ((WRSL != Zero)) - { - Return (One) - } - - DWD1 = 0x55555555 - DWD2 = 0xAAAAAAAA - DRSL = Zero - DRSL = (DWD1 & DWD2) /* \ANDO.DWD2 */ - If ((DRSL != Zero)) - { - Return (One) - } - - TOUD = 0x1FFF - Local0 = TOUD /* \ANDO.TOUD */ - If ((Local0 != 0x1FFF)) - { - Return (One) - } - - Return (Zero) - } - - Method (OROP, 0, NotSerialized) - { - BYT1 = 0xFF - BYT2 = 0xFF - BRSL = Zero - BRSL = (BYT1 | BYT2) /* \ANDO.BYT2 */ - If ((BRSL != 0xFF)) - { - Return (One) - } - - WRD1 = 0xFFFF - WRD2 = 0xFFFF - WRSL = Zero - WRSL = (WRD1 | WRD2) /* \ANDO.WRD2 */ - If ((WRSL != 0xFFFF)) - { - Return (One) - } - - DWD1 = Ones - DWD2 = Ones - DRSL = Zero - DRSL = (DWD1 | DWD2) /* \ANDO.DWD2 */ - If ((DRSL != Ones)) - { - Return (One) - } - - BYT1 = Zero - BYT2 = Zero - BRSL = Zero - BRSL = (BYT1 | BYT2) /* \ANDO.BYT2 */ - If ((BRSL != Zero)) - { - Return (One) - } - - WRD1 = Zero - WRD2 = Zero - WRSL = Zero - WRSL = (WRD1 | WRD2) /* \ANDO.WRD2 */ - If ((WRSL != Zero)) - { - Return (One) - } - - DWD1 = Zero - DWD2 = Zero - DRSL = Zero - DRSL = (DWD1 | DWD2) /* \ANDO.DWD2 */ - If ((DRSL != Zero)) - { - Return (One) - } - - BYT1 = 0x55 - BYT2 = 0xAA - BRSL = Zero - BRSL = (BYT1 | BYT2) /* \ANDO.BYT2 */ - If ((BRSL != 0xFF)) - { - Return (One) - } - - WRD1 = 0x5555 - WRD2 = 0xAAAA - WRSL = Zero - WRSL = (WRD1 | WRD2) /* \ANDO.WRD2 */ - If ((WRSL != 0xFFFF)) - { - Return (One) - } - - DWD1 = 0x55555555 - DWD2 = 0xAAAAAAAA - DRSL = Zero - DRSL = (DWD1 | DWD2) /* \ANDO.DWD2 */ - If ((DRSL != Ones)) - { - Return (One) - } - - Return (Zero) - } - - Method (TEST, 0, Serialized) - { - Debug = "++++++++ AndOrOp Test" - Name (RSLT, One) - RSLT = ANDP () - If ((RSLT == One)) - { - Return (RSLT) /* \ANDO.TEST.RSLT */ - } - - RSLT = OROP () - If ((RSLT == One)) - { - Return (RSLT) /* \ANDO.TEST.RSLT */ - } - - BYT1 = 0xFF - BYT2 = 0xFF - BRSL = Zero - WRD1 = 0xFFFF - WRD2 = 0xFFFF - WRSL = Zero - DWD1 = Ones - DWD2 = Ones - DRSL = Zero - Return (Zero) - } - } - - Device (BRKP) - { - Name (CNT0, Zero) - Method (BK1, 0, NotSerialized) - { - BreakPoint - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ BreakPnt Test" - CNT0 = Zero - While ((CNT0 < 0x0A)) - { - CNT0++ - } - - If ((CNT0 == 0x0A)) - { - Return (Zero) - } - - Return (One) - } - } - - Device (ADSU) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Method (TEST, 0, Serialized) - { - Debug = "++++++++ AddSubOp Test" - Name (DWRD, 0x12345678) - Name (WRD, 0x1234) - Name (BYT, 0x12) - DWRD = 0x12345678 - DWRD += 0x07 - If ((DWRD != 0x1234567F)) - { - Return (DWRD) /* \ADSU.TEST.DWRD */ - } - - WRD += 0x05 - If ((WRD != 0x1239)) - { - Return (WRD) /* \ADSU.TEST.WRD_ */ - } - - BYT += 0x03 - If ((BYT != 0x15)) - { - Return (BYT) /* \ADSU.TEST.BYT_ */ - } - - DWRD -= 0x07 - If ((DWRD != 0x12345678)) - { - Return (DWRD) /* \ADSU.TEST.DWRD */ - } - - WRD -= 0x03 - If ((WRD != 0x1236)) - { - Return (WRD) /* \ADSU.TEST.WRD_ */ - } - - BYT -= 0x03 - If ((BYT != 0x12)) - { - Return (BYT) /* \ADSU.TEST.BYT_ */ - } - - SMDW = 0x01234567 - SMDW += 0x08 - If ((SMDW != 0x0123456F)) - { - Return (SMDW) /* \ADSU.SMDW */ - } - - SMDW -= 0x07 - If ((SMDW != 0x01234568)) - { - Return (SMDW) /* \ADSU.SMDW */ - } - - SMWD = 0x0123 - SMWD += 0x06 - If ((SMWD != 0x0129)) - { - Return (SMWD) /* \ADSU.SMWD */ - } - - SMWD -= 0x05 - If ((SMWD != 0x0124)) - { - Return (SMWD) /* \ADSU.SMWD */ - } - - SMBY = One - SMBY += 0x04 - If ((SMBY != 0x05)) - { - Return (SMBY) /* \ADSU.SMBY */ - } - - SMBY -= 0x03 - If ((SMBY != 0x02)) - { - Return (SMBY) /* \ADSU.SMBY */ - } - - Return (Zero) - } - } - - Device (INDC) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Method (TEST, 0, Serialized) - { - Debug = "++++++++ IncDecOp Test" - Name (DWRD, 0x12345678) - Name (WRD, 0x1234) - Name (BYT, 0x12) - DWRD = 0x12345678 - DWRD++ - If ((DWRD != 0x12345679)) - { - Return (DWRD) /* \INDC.TEST.DWRD */ - } - - WRD++ - If ((WRD != 0x1235)) - { - Return (WRD) /* \INDC.TEST.WRD_ */ - } - - BYT++ - If ((BYT != 0x13)) - { - Return (BYT) /* \INDC.TEST.BYT_ */ - } - - DWRD-- - If ((DWRD != 0x12345678)) - { - Return (DWRD) /* \INDC.TEST.DWRD */ - } - - WRD-- - If ((WRD != 0x1234)) - { - Return (WRD) /* \INDC.TEST.WRD_ */ - } - - BYT-- - If ((BYT != 0x12)) - { - Return (BYT) /* \INDC.TEST.BYT_ */ - } - - SMDW = 0x01234567 - SMDW++ - If ((SMDW != 0x01234568)) - { - Return (SMDW) /* \INDC.SMDW */ - } - - SMDW-- - If ((SMDW != 0x01234567)) - { - Return (SMDW) /* \INDC.SMDW */ - } - - SMWD = 0x0123 - SMWD++ - If ((SMWD != 0x0124)) - { - Return (SMWD) /* \INDC.SMWD */ - } - - SMWD-- - If ((SMWD != 0x0123)) - { - Return (SMWD) /* \INDC.SMWD */ - } - - SMBY = One - SMBY++ - If ((SMBY != 0x02)) - { - Return (SMBY) /* \INDC.SMBY */ - } - - SMBY-- - If ((SMBY != One)) - { - Return (SMBY) /* \INDC.SMBY */ - } - - Return (Zero) - } - } - - Device (LOPS) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Name (BYT1, 0xFF) - Name (BYT2, 0xFF) - Name (BRSL, Zero) - Name (WRD1, 0xFFFF) - Name (WRD2, 0xFFFF) - Name (WRSL, Zero) - Name (DWD1, Ones) - Name (DWD2, Ones) - Name (DRSL, Zero) - Name (RSLT, One) - Method (ANDL, 2, NotSerialized) - { - If ((Arg0 == Arg1)) - { - RSLT = (Arg0 && Arg1) - If ((Ones != RSLT)) - { - Return (0x0B) - } - } - - Local0 = Arg0 - Local1 = Arg1 - If ((Local0 == Local1)) - { - RSLT = (Local0 && Local1) - If ((Ones != RSLT)) - { - Return (0x0C) - } - } - - If ((BYT1 == BYT2)) - { - BRSL = (BYT1 && BYT2) - If ((Ones != BRSL)) - { - Return (0x0D) - } - } - - If ((WRD1 == WRD2)) - { - WRSL = (WRD1 && WRD2) - If ((Ones != WRSL)) - { - Return (0x0E) - } - } - - If ((DWD1 == DWD2)) - { - DRSL = (DWD1 && DWD2) - If ((Ones != DRSL)) - { - Return (0x0F) - } - } - - BYT1 = 0xFF - SMBY = 0xFF - BRSL = Zero - If ((BYT1 == SMBY)) - { - BRSL = (BYT1 && SMBY) - If ((Ones != BRSL)) - { - Return (0x10) - } - } - - WRD1 = 0xFFFF - SMWD = 0xFFFF - WRSL = Zero - If ((WRD1 == SMWD)) - { - WRSL = (WRD1 && SMWD) - If ((Ones != WRSL)) - { - Return (0x11) - } - } - - DRSL = Zero - DWD1 = 0x00FFFFFF - SMDW = 0x00FFFFFF - If ((DWD1 == SMDW)) - { - DRSL = (DWD1 && SMDW) - If ((Ones != DRSL)) - { - Return (0x12) - } - } - - Return (Zero) - } - - Method (ORL, 2, NotSerialized) - { - If ((Arg0 == Arg1)) - { - RSLT = (Arg0 || Arg1) - If ((Ones != RSLT)) - { - Return (0x15) - } - } - - Local0 = Arg0 - Local1 = Arg1 - If ((Local0 == Local1)) - { - RSLT = (Local0 || Local1) - If ((Ones != RSLT)) - { - Return (0x16) - } - } - - BYT1 = 0xFF - BYT2 = Zero - BRSL = Zero - If ((BYT1 != BYT2)) - { - BRSL = (BYT1 || BYT2) - If ((Ones != BRSL)) - { - Return (0x17) - } - } - - WRD1 = 0xFFFF - WRD2 = Zero - WRSL = Zero - If ((WRD1 != WRD2)) - { - WRSL = (WRD1 || WRD2) - If ((Ones != WRSL)) - { - Return (0x18) - } - } - - DWD1 = Ones - DWD2 = Zero - DRSL = Zero - If ((DWD1 != DWD2)) - { - DRSL = (DWD1 || DWD2) - If ((Ones != DRSL)) - { - Return (0x19) - } - } - - BYT1 = Zero - SMBY = 0xFF - BRSL = Zero - If ((BYT1 == SMBY)) - { - BRSL = (BYT1 || SMBY) - If ((Ones != BRSL)) - { - Return (0x1A) - } - } - - WRD1 = Zero - SMWD = 0xFFFF - WRSL = Zero - If ((WRD1 == SMWD)) - { - WRSL = (WRD1 || SMWD) - If ((Ones != WRSL)) - { - Return (0x1B) - } - } - - DWD1 = Zero - SMDW = Ones - DRSL = Zero - If ((DWD1 == SMDW)) - { - DRSL = (DWD1 && SMDW) - If ((Ones != DRSL)) - { - Return (0x1C) - } - } - - Return (Zero) - } - - Method (LSGR, 2, NotSerialized) - { - If ((Ones == (Arg1 <= Arg0))) - { - Return (0x1F) - } - - If ((Ones == !(Arg1 >= Arg0))) - { - Return (0x20) - } - - If ((Ones == (Arg1 < Arg0))) - { - Return (0x21) - } - - If ((Ones == (Arg1 <= Arg0))) - { - Return (0x22) - } - - Local0 = Arg0 - Local1 = Arg1 - If ((Local1 <= Local0)) - { - Return (0x23) - } - - BYT1 = 0x12 - BYT2 = 0x21 - If ((BYT2 <= BYT1)) - { - Return (0x24) - } - - If ((BYT1 >= BYT2)) - { - Return (0x25) - } - - If (!(BYT2 >= BYT1)) - { - Return (0x26) - } - - If (!(BYT1 <= BYT2)) - { - Return (0x27) - } - - WRD1 = 0x1212 - WRD2 = 0x2121 - If ((WRD2 <= WRD1)) - { - Return (0x0136) - } - - If ((WRD1 >= WRD2)) - { - Return (0x0137) - } - - If (!(WRD2 >= WRD1)) - { - Return (0x0138) - } - - If (!(WRD1 <= WRD2)) - { - Return (0x0139) - } - - DWD1 = 0x12121212 - DWD2 = 0x21212121 - If ((DWD2 <= DWD1)) - { - Return (0x013A) - } - - If ((DWD1 >= DWD2)) - { - Return (0x013B) - } - - If (!(DWD2 >= DWD1)) - { - Return (0x013C) - } - - If (!(DWD1 <= DWD2)) - { - Return (0x013D) - } - - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ LOps Test" - RSLT = Zero - RSLT = ANDL (0x02, 0x02) - If ((RSLT != Zero)) - { - Return (RSLT) /* \LOPS.RSLT */ - } - - RSLT = ORL (0x05, 0x05) - If ((RSLT != Zero)) - { - Return (RSLT) /* \LOPS.RSLT */ - } - - RSLT = LSGR (0x05, 0x07) - If ((RSLT != Zero)) - { - Return (RSLT) /* \LOPS.RSLT */ - } - - Return (Zero) - } - } - - Device (FDSO) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Name (BYT1, One) - Name (BRSL, Zero) - Name (WRD1, 0x0100) - Name (WRSL, Zero) - Name (DWD1, 0x00010000) - Name (DRSL, Zero) - Name (RSLT, One) - Name (CNTR, One) - Method (SHFT, 2, NotSerialized) - { - Local0 = Arg0 - Local1 = Arg1 - FindSetLeftBit (Arg0, BRSL) /* \FDSO.BRSL */ - If ((BRSL != Arg1)) - { - Return (0x11) - } - - If ((Arg0 != Local0)) - { - Return (0x12) - } - - FindSetLeftBit (Local0, BRSL) /* \FDSO.BRSL */ - If ((BRSL != Local1)) - { - Return (0x13) - } - - If ((Arg0 != Local0)) - { - Return (0x14) - } - - BYT1 = 0x07 - FindSetLeftBit (BYT1, BRSL) /* \FDSO.BRSL */ - If ((BRSL != 0x03)) - { - Return (0x15) - } - - If ((BYT1 != 0x07)) - { - Return (0x16) - } - - BYT1 = One - CNTR = One - While ((CNTR <= 0x08)) - { - FindSetLeftBit (BYT1, BRSL) /* \FDSO.BRSL */ - If ((BRSL != CNTR)) - { - Return (0x17) - } - - BYT1 <<= One - CNTR++ - } - - BYT1 = 0x07 - FindSetRightBit (BYT1, BRSL) /* \FDSO.BRSL */ - If ((BRSL != One)) - { - Return (0x21) - } - - If ((BYT1 != 0x07)) - { - Return (0x22) - } - - CNTR = One - BYT1 = 0xFF - While ((CNTR <= 0x08)) - { - FindSetRightBit (BYT1, BRSL) /* \FDSO.BRSL */ - If ((BRSL != CNTR)) - { - Return (0x23) - } - - BYT1 <<= One - CNTR++ - } - - CNTR = 0x09 - WRD1 = 0x0100 - While ((CNTR <= 0x10)) - { - FindSetLeftBit (WRD1, WRSL) /* \FDSO.WRSL */ - If ((WRSL != CNTR)) - { - Return (0x31) - } - - WRD1 <<= One - CNTR++ - } - - CNTR = 0x09 - WRD1 = 0xFF00 - While ((CNTR <= 0x10)) - { - FindSetRightBit (WRD1, WRSL) /* \FDSO.WRSL */ - If ((WRSL != CNTR)) - { - Return (0x32) - } - - WRD1 <<= One - CNTR++ - } - - CNTR = 0x11 - DWD1 = 0x00010000 - While ((CNTR <= 0x20)) - { - FindSetLeftBit (DWD1, DRSL) /* \FDSO.DRSL */ - If ((DRSL != CNTR)) - { - Return (0x41) - } - - DWD1 <<= One - CNTR++ - } - - CNTR = 0x11 - DWD1 = 0xFFFF0000 - While ((CNTR <= 0x20)) - { - FindSetRightBit (DWD1, DRSL) /* \FDSO.DRSL */ - If ((DRSL != CNTR)) - { - Return (0x42) - } - - DWD1 <<= One - CNTR++ - } - - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ FdSetOps Test" - RSLT = SHFT (0x80, 0x08) - If ((RSLT != Zero)) - { - Return (RSLT) /* \FDSO.RSLT */ - } - - Return (Zero) - } - } - - Device (MLDV) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Method (TEST, 0, Serialized) - { - Debug = "++++++++ MulDivOp Test" - Name (RMDR, Zero) - Name (DWRD, 0x12345678) - Name (WRD, 0x1234) - Name (BYT, 0x12) - DWRD = 0x12345678 - DWRD *= 0x03 - If ((DWRD != 0x369D0368)) - { - Return (DWRD) /* \MLDV.TEST.DWRD */ - } - - WRD *= 0x04 - If ((WRD != 0x48D0)) - { - Return (WRD) /* \MLDV.TEST.WRD_ */ - } - - BYT *= 0x05 - If ((BYT != 0x5A)) - { - Return (BYT) /* \MLDV.TEST.BYT_ */ - } - - Divide (DWRD, 0x03, DWRD, RMDR) /* \MLDV.TEST.RMDR */ - If ((DWRD != 0x12345678)) - { - Return (DWRD) /* \MLDV.TEST.DWRD */ - } - - If ((RMDR != Zero)) - { - Return (RMDR) /* \MLDV.TEST.RMDR */ - } - - Divide (WRD, 0x04, WRD, RMDR) /* \MLDV.TEST.RMDR */ - If ((WRD != 0x1234)) - { - Return (WRD) /* \MLDV.TEST.WRD_ */ - } - - If ((RMDR != Zero)) - { - Return (RMDR) /* \MLDV.TEST.RMDR */ - } - - Divide (BYT, 0x05, BYT, RMDR) /* \MLDV.TEST.RMDR */ - If ((BYT != 0x12)) - { - Return (BYT) /* \MLDV.TEST.BYT_ */ - } - - If ((RMDR != Zero)) - { - Return (RMDR) /* \MLDV.TEST.RMDR */ - } - - SMDW = 0x01234567 - SMDW *= 0x02 - If ((SMDW != 0x02468ACE)) - { - Return (SMDW) /* \MLDV.SMDW */ - } - - Divide (SMDW, 0x03, SMDW, RMDR) /* \MLDV.TEST.RMDR */ - If ((SMDW != 0x00C22E44)) - { - Return (SMDW) /* \MLDV.SMDW */ - } - - If ((RMDR != 0x02)) - { - Return (RMDR) /* \MLDV.TEST.RMDR */ - } - - SMWD = 0x0123 - SMWD *= 0x03 - If ((SMWD != 0x0369)) - { - Return (SMWD) /* \MLDV.SMWD */ - } - - Divide (SMWD, 0x02, SMWD, RMDR) /* \MLDV.TEST.RMDR */ - If ((SMWD != 0x01B4)) - { - Return (SMWD) /* \MLDV.SMWD */ - } - - If ((RMDR != One)) - { - Return (RMDR) /* \MLDV.TEST.RMDR */ - } - - SMBY = One - SMBY *= 0x07 - If ((SMBY != 0x07)) - { - Return (SMBY) /* \MLDV.SMBY */ - } - - Divide (SMBY, 0x04, SMBY, RMDR) /* \MLDV.TEST.RMDR */ - If ((SMBY != One)) - { - Return (SMBY) /* \MLDV.SMBY */ - } - - If ((RMDR != 0x03)) - { - Return (RMDR) /* \MLDV.TEST.RMDR */ - } - - Return (Zero) - } - } - - Device (NBIT) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Name (BYT1, 0xFF) - Name (BYT2, 0xFF) - Name (BRSL, Zero) - Name (WRD1, 0xFFFF) - Name (WRD2, 0xFFFF) - Name (WRSL, Zero) - Name (DWD1, Ones) - Name (DWD2, Ones) - Name (DRSL, Zero) - Name (RSLT, One) - Name (ARSL, Zero) - Name (LRSL, Zero) - Method (NNDB, 2, NotSerialized) - { - SMDW = Ones - SMWD = 0xFFFF - SMBY = 0xFF - NAnd (Arg0, Arg1, ARSL) /* \NBIT.ARSL */ - If ((ARSL != 0xFFFFFFFD)) - { - Return (0x0B) - } - - Local0 = Arg0 - Local1 = Arg1 - NAnd (Local0, Local1, LRSL) /* \NBIT.LRSL */ - If ((LRSL != 0xFFFFFFFD)) - { - Return (0x0C) - } - - NAnd (BYT1, BYT2, BRSL) /* \NBIT.BRSL */ - If ((BRSL != 0xFFFFFF00)) - { - Return (0x0D) - } - - NAnd (WRD1, WRD2, WRSL) /* \NBIT.WRSL */ - If ((WRSL != 0xFFFF0000)) - { - Return (0x0E) - } - - NAnd (DWD1, DWD2, DRSL) /* \NBIT.DRSL */ - If ((DRSL != Zero)) - { - Return (0x0F) - } - - NAnd (SMBY, 0xFF, BRSL) /* \NBIT.BRSL */ - If ((BRSL != 0xFFFFFF00)) - { - Return (0x10) - } - - NAnd (SMWD, 0xFFFF, WRSL) /* \NBIT.WRSL */ - If ((WRSL != 0xFFFF0000)) - { - Return (0x11) - } - - NAnd (SMDW, Ones, DRSL) /* \NBIT.DRSL */ - If ((DRSL != Zero)) - { - Return (0x12) - } - - Return (Zero) - } - - Method (NNOR, 2, NotSerialized) - { - NOr (Arg0, Arg1, ARSL) /* \NBIT.ARSL */ - If ((ARSL != 0xFFFFFFFD)) - { - Return (0x15) - } - - Local0 = Arg0 - Local1 = Arg1 - NOr (Local0, Local1, LRSL) /* \NBIT.LRSL */ - If ((LRSL != 0xFFFFFFFD)) - { - Return (0x16) - } - - NOr (BYT1, BYT2, BRSL) /* \NBIT.BRSL */ - If ((BRSL != 0xFFFFFF00)) - { - Return (0x17) - } - - NOr (WRD1, WRD2, WRSL) /* \NBIT.WRSL */ - If ((WRSL != 0xFFFF0000)) - { - Return (0x18) - } - - NOr (DWD1, DWD2, DRSL) /* \NBIT.DRSL */ - If ((DRSL != Zero)) - { - Return (0x19) - } - - NOr (SMBY, 0xFF, BRSL) /* \NBIT.BRSL */ - If ((BRSL != 0xFFFFFF00)) - { - Return (0x1A) - } - - NOr (SMWD, 0xFFFF, WRSL) /* \NBIT.WRSL */ - If ((WRSL != 0xFFFF0000)) - { - Return (0x1B) - } - - NOr (SMDW, Ones, DRSL) /* \NBIT.DRSL */ - If ((DRSL != Zero)) - { - Return (0x1C) - } - - Return (Zero) - } - - Method (NNOT, 2, NotSerialized) - { - ARSL = (Arg0 | Arg1) - ARSL = ~ARSL /* \NBIT.ARSL */ - If ((ARSL != 0xFFFFFFFD)) - { - Return (0x1F) - } - - Local0 = Arg0 - Local1 = Arg1 - LRSL = (Local0 | Local1) - LRSL = ~LRSL /* \NBIT.LRSL */ - If ((LRSL != 0xFFFFFFFD)) - { - Return (0x20) - } - - BRSL = (BYT1 | BYT2) /* \NBIT.BYT2 */ - BRSL = ~BRSL /* \NBIT.BRSL */ - If ((BRSL != 0xFFFFFF00)) - { - Return (0x21) - } - - WRSL = (WRD1 | WRD2) /* \NBIT.WRD2 */ - WRSL = ~WRSL /* \NBIT.WRSL */ - If ((WRSL != 0xFFFF0000)) - { - Return (0x22) - } - - DRSL = (DWD1 | DWD2) /* \NBIT.DWD2 */ - DRSL = ~DRSL /* \NBIT.DRSL */ - If ((DRSL != Zero)) - { - Return (0x23) - } - - BRSL = (SMBY | 0xFF) - BRSL = ~BRSL /* \NBIT.BRSL */ - If ((BRSL != 0xFFFFFF00)) - { - Return (0x24) - } - - WRSL = (SMWD | 0xFFFF) - WRSL = ~WRSL /* \NBIT.WRSL */ - If ((WRSL != 0xFFFF0000)) - { - Return (0x25) - } - - DRSL = (SMDW | Ones) - DRSL = ~DRSL /* \NBIT.DRSL */ - If ((DRSL != Zero)) - { - Return (0x26) - } - - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ NBitOps Test" - RSLT = NNDB (0x02, 0x02) - If ((RSLT != Zero)) - { - Return (RSLT) /* \NBIT.RSLT */ - } - - RSLT = NNOR (0x02, 0x02) - If ((RSLT != Zero)) - { - Return (RSLT) /* \NBIT.RSLT */ - } - - RSLT = NNOT (0x02, 0x02) - If ((RSLT != Zero)) - { - Return (RSLT) /* \NBIT.RSLT */ - } - - Return (Zero) - } - } - - Device (SHFT) - { - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - SMDW, 32, - SMWD, 16, - SMBY, 8 - } - - Name (SHFC, Zero) - Name (BYT1, 0xFF) - Name (BRSL, Zero) - Name (WRD1, 0xFFFF) - Name (WRSL, Zero) - Name (DWD1, Ones) - Name (DRSL, Zero) - Name (RSLT, One) - Name (ARSL, Zero) - Name (LRSL, Zero) - Method (SLFT, 2, NotSerialized) - { - SMDW = Ones - SMWD = 0xFFFF - SMBY = 0xFF - ARSL = (Arg0 << Arg1) - If ((ARSL != 0x08)) - { - Return (0x0B) - } - - Local0 = Arg0 - Local1 = Arg1 - LRSL = (Local0 << Local1) - If ((LRSL != 0x08)) - { - Return (0x0C) - } - - SHFC = 0x02 - BRSL = (BYT1 << SHFC) /* \SHFT.SHFC */ - If ((BRSL != 0x03FC)) - { - Return (0x0D) - } - - SHFC = 0x04 - WRSL = (WRD1 << SHFC) /* \SHFT.SHFC */ - If ((WRSL != 0x000FFFF0)) - { - Return (0x0E) - } - - SHFC = 0x08 - DRSL = (DWD1 << SHFC) /* \SHFT.SHFC */ - If ((DRSL != 0xFFFFFF00)) - { - Return (0x0F) - } - - SHFC = 0x04 - BRSL = (SMBY << SHFC) /* \SHFT.SHFC */ - If ((BRSL != 0x0FF0)) - { - Return (0x10) - } - - SHFC = 0x04 - WRSL = (SMWD << SHFC) /* \SHFT.SHFC */ - If ((WRSL != 0x000FFFF0)) - { - Return (0x11) - } - - SHFC = 0x08 - DRSL = (SMDW << SHFC) /* \SHFT.SHFC */ - If ((DRSL != 0xFFFFFF00)) - { - Return (0x12) - } - - Return (Zero) - } - - Method (SRGT, 2, NotSerialized) - { - BYT1 = 0xFF - BRSL = Zero - WRD1 = 0xFFFF - WRSL = Zero - DWD1 = Ones - DRSL = Zero - ARSL = Zero - LRSL = Zero - SMDW = Ones - SMWD = 0xFFFF - SMBY = 0xFF - ARSL = (Arg0 >> Arg1) - If ((ARSL != Zero)) - { - Return (0x15) - } - - Local0 = Arg0 - Local1 = Arg1 - LRSL = (Local0 >> Local1) - If ((LRSL != Zero)) - { - Return (0x16) - } - - SHFC = 0x02 - BRSL = (BYT1 >> SHFC) /* \SHFT.SHFC */ - If ((BRSL != 0x3F)) - { - Return (0x17) - } - - SHFC = 0x04 - WRSL = (WRD1 >> SHFC) /* \SHFT.SHFC */ - If ((WRSL != 0x0FFF)) - { - Return (0x18) - } - - SHFC = 0x08 - DRSL = (DWD1 >> SHFC) /* \SHFT.SHFC */ - If ((DRSL != 0x00FFFFFF)) - { - Return (0x19) - } - - SHFC = 0x04 - BRSL = (SMBY >> SHFC) /* \SHFT.SHFC */ - If ((BRSL != 0x0F)) - { - Return (0x1A) - } - - SHFC = 0x04 - WRSL = (SMWD >> SHFC) /* \SHFT.SHFC */ - If ((WRSL != 0x0FFF)) - { - Return (0x1B) - } - - SHFC = 0x08 - DRSL = (SMDW >> SHFC) /* \SHFT.SHFC */ - If ((DRSL != 0x00FFFFFF)) - { - Return (0x1C) - } - - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ ShftOp Test" - RSLT = SLFT (0x02, 0x02) - If ((RSLT != Zero)) - { - Return (RSLT) /* \SHFT.RSLT */ - } - - RSLT = SRGT (0x02, 0x02) - If ((RSLT != Zero)) - { - Return (RSLT) /* \SHFT.RSLT */ - } - - Return (Zero) - } - } - - Device (XORD) - { - Method (TEST, 0, Serialized) - { - Debug = "++++++++ Xor Test" - OperationRegion (RAM, SystemMemory, 0x00800000, 0x0100) - Field (RAM, ByteAcc, NoLock, Preserve) - { - RES1, 1, - BYT1, 8, - BYT2, 8, - RBYT, 8, - RES2, 1, - WRD1, 16, - WRD2, 16, - RWRD, 16, - RES3, 1, - DWD1, 32, - DWD2, 32, - RDWD, 32, - RES4, 1 - } - - RES1 = One - RES2 = One - RES3 = One - RES4 = One - If ((RES1 != One)) - { - Return (One) - } - - If ((RES2 != One)) - { - Return (One) - } - - If ((RES3 != One)) - { - Return (One) - } - - If ((RES4 != One)) - { - Return (One) - } - - BYT1 = Zero - BYT2 = Zero - Local0 = (BYT1 ^ BYT2) /* \XORD.TEST.BYT2 */ - RBYT = Local0 - If ((RBYT != Zero)) - { - Return (One) - } - - BYT1 = 0xFF - BYT2 = 0xFF - Local0 = (BYT1 ^ BYT2) /* \XORD.TEST.BYT2 */ - RBYT = Local0 - If ((RBYT != Zero)) - { - Return (One) - } - - BYT1 = 0x55 - BYT2 = 0xAA - Local0 = (BYT1 ^ BYT2) /* \XORD.TEST.BYT2 */ - RBYT = Local0 - If ((RBYT != 0xFF)) - { - Return (One) - } - - BYT1 = 0xAA - BYT2 = 0x55 - Local0 = (BYT1 ^ BYT2) /* \XORD.TEST.BYT2 */ - RBYT = Local0 - If ((RBYT != 0xFF)) - { - Return (One) - } - - BYT1 = 0x12 - BYT2 = 0xED - Local0 = (BYT1 ^ BYT2) /* \XORD.TEST.BYT2 */ - RBYT = Local0 - If ((RBYT != 0xFF)) - { - Return (One) - } - - BYT1 = 0x12 - If ((BYT1 != 0x12)) - { - Return (One) - } - - BYT2 = 0xFE - If ((BYT2 != 0xFE)) - { - Return (One) - } - - RBYT = 0xAB - If ((RBYT != 0xAB)) - { - Return (One) - } - - WRD1 = Zero - WRD2 = Zero - RWRD = (WRD1 ^ WRD2) /* \XORD.TEST.WRD2 */ - If ((RWRD != Zero)) - { - Return (One) - } - - WRD1 = 0xFFFF - WRD2 = 0xFFFF - RWRD = (WRD1 ^ WRD2) /* \XORD.TEST.WRD2 */ - If ((RWRD != Zero)) - { - Return (One) - } - - WRD1 = 0x5555 - WRD2 = 0xAAAA - RWRD = (WRD1 ^ WRD2) /* \XORD.TEST.WRD2 */ - If ((RWRD != 0xFFFF)) - { - Return (One) - } - - WRD1 = 0xAAAA - WRD2 = 0x5555 - RWRD = (WRD1 ^ WRD2) /* \XORD.TEST.WRD2 */ - If ((RWRD != 0xFFFF)) - { - Return (One) - } - - WRD1 = 0x1234 - WRD2 = 0xEDCB - RWRD = (WRD1 ^ WRD2) /* \XORD.TEST.WRD2 */ - If ((RWRD != 0xFFFF)) - { - Return (One) - } - - WRD1 = 0x1234 - If ((WRD1 != 0x1234)) - { - Return (One) - } - - WRD2 = 0xFEDC - If ((WRD2 != 0xFEDC)) - { - Return (One) - } - - RWRD = 0x87AB - If ((RWRD != 0x87AB)) - { - Return (One) - } - - DWD1 = Zero - DWD2 = Zero - RDWD = (DWD1 ^ DWD2) /* \XORD.TEST.DWD2 */ - If ((RDWD != Zero)) - { - Return (One) - } - - DWD1 = Ones - DWD2 = Ones - RDWD = (DWD1 ^ DWD2) /* \XORD.TEST.DWD2 */ - If ((RDWD != Zero)) - { - Return (One) - } - - DWD1 = 0x55555555 - DWD2 = 0xAAAAAAAA - RDWD = (DWD1 ^ DWD2) /* \XORD.TEST.DWD2 */ - If ((RDWD != Ones)) - { - Return (One) - } - - DWD1 = 0xAAAAAAAA - DWD2 = 0x55555555 - RDWD = (DWD1 ^ DWD2) /* \XORD.TEST.DWD2 */ - If ((RDWD != Ones)) - { - Return (One) - } - - DWD1 = 0x12345678 - DWD2 = 0xEDCBA987 - RDWD = (DWD1 ^ DWD2) /* \XORD.TEST.DWD2 */ - If ((RDWD != Ones)) - { - Return (One) - } - - DWD1 = 0x12345678 - If ((DWD1 != 0x12345678)) - { - Return (One) - } - - DWD2 = 0xFEDCBA98 - If ((DWD2 != 0xFEDCBA98)) - { - Return (One) - } - - RDWD = 0x91827364 - If ((RDWD != 0x91827364)) - { - Return (One) - } - - If ((RES1 != One)) - { - Return (One) - } - - If ((RES2 != One)) - { - Return (One) - } - - If ((RES3 != One)) - { - Return (One) - } - - If ((RES4 != One)) - { - Return (One) - } - - RES1 = Zero - RES2 = Zero - RES3 = Zero - RES4 = Zero - If ((BYT1 != 0x12)) - { - Return (One) - } - - If ((BYT2 != 0xFE)) - { - Return (One) - } - - If ((RBYT != 0xAB)) - { - Return (One) - } - - If ((WRD1 != 0x1234)) - { - Return (One) - } - - If ((WRD2 != 0xFEDC)) - { - Return (One) - } - - If ((RWRD != 0x87AB)) - { - Return (One) - } - - If ((DWD1 != 0x12345678)) - { - Return (One) - } - - If ((DWD2 != 0xFEDCBA98)) - { - Return (One) - } - - If ((RDWD != 0x91827364)) - { - Return (One) - } - - If ((RES1 != Zero)) - { - Return (One) - } - - If ((RES2 != Zero)) - { - Return (One) - } - - If ((RES3 != Zero)) - { - Return (One) - } - - If ((RES4 != Zero)) - { - Return (One) - } - - Return (Zero) - } - } - - Device (CRBF) - { - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ CrBytFld Test" - Local0 = Buffer (0x04) {} - CreateByteField (Local0, Zero, BF0) - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x02) - } - - BF0 = One - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x03) - } - - If ((BF0 != One)) - { - Return (0x04) - } - - CreateByteField (Local0, One, BF1) - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x0A) - } - - BF1 = 0x05 - Local1 = ObjectType (Local0) - If ((Local1 != 0x03)) - { - Return (0x0B) - } - - If ((BF1 != 0x05)) - { - Return (0x0C) - } - - If ((BF0 != One)) - { - Return (0x0D) - } - - BF0 = 0xFFFF - If ((BF0 != 0xFF)) - { - Return (0x14) - } - - If ((BF1 != 0x05)) - { - Return (0x15) - } - - Return (Zero) - } - } - - Device (IDX4) - { - Method (MADM, 1, Serialized) - { - OperationRegion (RAM, SystemMemory, Arg0, 0x0100) - Field (RAM, DWordAcc, NoLock, Preserve) - { - DWD0, 32, - DWD1, 32 - } - - Field (RAM, ByteAcc, NoLock, Preserve) - { - BIT0, 1, - BIT1, 1, - BIT2, 1, - BIT3, 1, - BIT4, 1, - BIT5, 1, - BIT6, 1, - BIT7, 1, - BIT8, 1, - BIT9, 1, - BITA, 1, - BITB, 1, - BITC, 1, - BITD, 1, - BITE, 1, - BITF, 1, - BI10, 1, - BI11, 1, - BI12, 1, - BI13, 1, - BI14, 1, - BI15, 1, - BI16, 1, - BI17, 1, - BI18, 1, - BI19, 1, - BI1A, 1, - BI1B, 1, - BI1C, 1, - BI1D, 1, - BI1E, 1, - BI1F, 1 - } - - Field (RAM, ByteAcc, NoLock, Preserve) - { - B2_0, 2, - B2_1, 2, - B2_2, 2, - B2_3, 2, - B2_4, 2, - B2_5, 2, - B2_6, 2, - B2_7, 2, - B2_8, 2, - B2_9, 2, - B2_A, 2, - B2_B, 2, - B2_C, 2, - B2_D, 2, - B2_E, 2, - B2_F, 2 - } - - DWD0 = 0x5AA55AA5 - DWD1 = 0x5AA55AA5 - BIT0 = Zero - If ((BIT0 != Zero)) - { - Return (One) - } - - If ((DWD0 != 0x5AA55AA4)) - { - Return (0x02) - } - - BIT1 = One - If ((BIT1 != One)) - { - Return (0x03) - } - - If ((DWD0 != 0x5AA55AA6)) - { - Return (0x04) - } - - BIT2 = Zero - If ((BIT2 != Zero)) - { - Return (0x05) - } - - If ((DWD0 != 0x5AA55AA2)) - { - Return (0x06) - } - - BIT3 = One - If ((BIT3 != One)) - { - Return (0x07) - } - - If ((DWD0 != 0x5AA55AAA)) - { - Return (0x08) - } - - BIT4 = One - If ((BIT4 != One)) - { - Return (0x09) - } - - If ((DWD0 != 0x5AA55ABA)) - { - Return (0x0A) - } - - BIT5 = Zero - If ((BIT5 != Zero)) - { - Return (0x0B) - } - - If ((DWD0 != 0x5AA55A9A)) - { - Return (0x0C) - } - - BIT6 = One - If ((BIT6 != One)) - { - Return (0x0D) - } - - If ((DWD0 != 0x5AA55ADA)) - { - Return (0x0E) - } - - BIT7 = Zero - If ((BIT7 != Zero)) - { - Return (0x0F) - } - - If ((DWD0 != 0x5AA55A5A)) - { - Return (0x10) - } - - BIT8 = One - If ((BIT8 != One)) - { - Return (0x11) - } - - If ((DWD0 != 0x5AA55B5A)) - { - Return (0x12) - } - - BIT9 = Zero - If ((BIT9 != Zero)) - { - Return (0x13) - } - - If ((DWD0 != 0x5AA5595A)) - { - Return (0x14) - } - - BITA = One - If ((BITA != One)) - { - Return (0x15) - } - - If ((DWD0 != 0x5AA55D5A)) - { - Return (0x16) - } - - BITB = Zero - If ((BITB != Zero)) - { - Return (0x17) - } - - If ((DWD0 != 0x5AA5555A)) - { - Return (0x18) - } - - BITC = Zero - If ((BITC != Zero)) - { - Return (0x19) - } - - If ((DWD0 != 0x5AA5455A)) - { - Return (0x1A) - } - - BITD = One - If ((BITD != One)) - { - Return (0x1B) - } - - If ((DWD0 != 0x5AA5655A)) - { - Return (0x1C) - } - - BITE = Zero - If ((BITE != Zero)) - { - Return (0x1D) - } - - If ((DWD0 != 0x5AA5255A)) - { - Return (0x1E) - } - - BITF = One - If ((BITF != One)) - { - Return (0x1F) - } - - If ((DWD0 != 0x5AA5A55A)) - { - Return (0x20) - } - - BI10 = Zero - If ((BI10 != Zero)) - { - Return (0x21) - } - - If ((DWD0 != 0x5AA4A55A)) - { - Return (0x22) - } - - BI11 = One - If ((BI11 != One)) - { - Return (0x23) - } - - If ((DWD0 != 0x5AA6A55A)) - { - Return (0x24) - } - - BI12 = Zero - If ((BI12 != Zero)) - { - Return (0x25) - } - - If ((DWD0 != 0x5AA2A55A)) - { - Return (0x26) - } - - BI13 = One - If ((BI13 != One)) - { - Return (0x27) - } - - If ((DWD0 != 0x5AAAA55A)) - { - Return (0x28) - } - - BI14 = One - If ((BI14 != One)) - { - Return (0x29) - } - - If ((DWD0 != 0x5ABAA55A)) - { - Return (0x2A) - } - - BI15 = Zero - If ((BI15 != Zero)) - { - Return (0x2B) - } - - If ((DWD0 != 0x5A9AA55A)) - { - Return (0x2C) - } - - BI16 = One - If ((BI16 != One)) - { - Return (0x2D) - } - - If ((DWD0 != 0x5ADAA55A)) - { - Return (0x2E) - } - - BI17 = Zero - If ((BI17 != Zero)) - { - Return (0x2F) - } - - If ((DWD0 != 0x5A5AA55A)) - { - Return (0x30) - } - - BI18 = One - If ((BI18 != One)) - { - Return (0x31) - } - - If ((DWD0 != 0x5B5AA55A)) - { - Return (0x32) - } - - BI19 = Zero - If ((BI19 != Zero)) - { - Return (0x33) - } - - If ((DWD0 != 0x595AA55A)) - { - Return (0x34) - } - - BI1A = One - If ((BI1A != One)) - { - Return (0x35) - } - - If ((DWD0 != 0x5D5AA55A)) - { - Return (0x36) - } - - BI1B = Zero - If ((BI1B != Zero)) - { - Return (0x37) - } - - If ((DWD0 != 0x555AA55A)) - { - Return (0x38) - } - - BI1C = Zero - If ((BI1C != Zero)) - { - Return (0x39) - } - - If ((DWD0 != 0x455AA55A)) - { - Return (0x3A) - } - - BI1D = One - If ((BI1D != One)) - { - Return (0x3B) - } - - If ((DWD0 != 0x655AA55A)) - { - Return (0x3C) - } - - BI1E = Zero - If ((BI1E != Zero)) - { - Return (0x3D) - } - - If ((DWD0 != 0x255AA55A)) - { - Return (0x3E) - } - - BI1F = One - If ((BI1F != One)) - { - Return (0x3F) - } - - If ((DWD0 != 0xA55AA55A)) - { - Return (0x40) - } - - B2_0 = 0x03 - If ((B2_0 != 0x03)) - { - Return (0x41) - } - - If ((DWD0 != 0xA55AA55B)) - { - Return (0x42) - } - - B2_1 = One - If ((B2_1 != One)) - { - Return (0x43) - } - - If ((DWD0 != 0xA55AA557)) - { - Return (0x44) - } - - B2_2 = Zero - If ((B2_2 != Zero)) - { - Return (0x45) - } - - If ((DWD0 != 0xA55AA547)) - { - Return (0x46) - } - - B2_3 = 0x03 - If ((B2_3 != 0x03)) - { - Return (0x47) - } - - If ((DWD0 != 0xA55AA5C7)) - { - Return (0x48) - } - - B2_4 = 0x03 - If ((B2_4 != 0x03)) - { - Return (0x49) - } - - If ((DWD0 != 0xA55AA7C7)) - { - Return (0x4A) - } - - B2_5 = Zero - If ((B2_5 != Zero)) - { - Return (0x4B) - } - - If ((DWD0 != 0xA55AA3C7)) - { - Return (0x4C) - } - - B2_6 = One - If ((B2_6 != One)) - { - Return (0x4D) - } - - If ((DWD0 != 0xA55A93C7)) - { - Return (0x4E) - } - - B2_7 = One - If ((B2_7 != One)) - { - Return (0x4F) - } - - If ((DWD0 != 0xA55A53C7)) - { - Return (0x50) - } - - B2_8 = Zero - If ((B2_8 != Zero)) - { - Return (0x51) - } - - If ((DWD0 != 0xA55853C7)) - { - Return (0x52) - } - - B2_9 = One - If ((B2_9 != One)) - { - Return (0x53) - } - - If ((DWD0 != 0xA55453C7)) - { - Return (0x54) - } - - B2_A = 0x02 - If ((B2_A != 0x02)) - { - Return (0x55) - } - - If ((DWD0 != 0xA56453C7)) - { - Return (0x56) - } - - B2_B = 0x02 - If ((B2_B != 0x02)) - { - Return (0x57) - } - - If ((DWD0 != 0xA5A453C7)) - { - Return (0x58) - } - - B2_C = 0x03 - If ((B2_C != 0x03)) - { - Return (0x59) - } - - If ((DWD0 != 0xA7A453C7)) - { - Return (0x5A) - } - - B2_D = 0x03 - If ((B2_D != 0x03)) - { - Return (0x5B) - } - - If ((DWD0 != 0xAFA453C7)) - { - Return (0x5C) - } - - B2_E = One - If ((B2_E != One)) - { - Return (0x5D) - } - - If ((DWD0 != 0x9FA453C7)) - { - Return (0x5E) - } - - B2_F = Zero - If ((B2_F != Zero)) - { - Return (0x5F) - } - - If ((DWD0 != 0x1FA453C7)) - { - Return (0x60) - } - - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndexOp4 Test" - Local0 = MADM (0x00800000) - If ((Local0 != Zero)) - { - Return (Local0) - } - - Return (Local0) - } - } - - Device (EVNT) - { - Event (EVNT) - Method (TEVN, 1, NotSerialized) - { - Reset (EVNT) - Signal (EVNT) - Signal (EVNT) - Local0 = Wait (EVNT, Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x21) - } - - If ((Local0 != Zero)) - { - Return (0x22) - } - - Debug = "Acquire 1st existing signal PASS" - Local0 = Wait (EVNT, Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x31) - } - - If ((Local0 != Zero)) - { - Return (0x32) - } - - Debug = "Acquire 2nd existing signal PASS" - If ((Arg0 == 0xFFFF)) - { - Arg0 = 0xFFFE - } - - Local0 = Wait (EVNT, Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x41) - } - - If ((Local0 == Zero)) - { - Return (0x42) - } - - Debug = "Acquire signal timeout PASS" - Signal (EVNT) - Signal (EVNT) - Reset (EVNT) - Local0 = Wait (EVNT, Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x51) - } - - If ((Local0 == Zero)) - { - Return (0x52) - } - - Debug = "Reset signal PASS" - Local0 = Wait (EVNT, Zero) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x61) - } - - If ((Local0 == Zero)) - { - Return (0x62) - } - - Debug = "Zero Lvalue PASS" - Local0 = Wait (EVNT, One) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x71) - } - - If ((Local0 == Zero)) - { - Return (0x72) - } - - Debug = "One Lvalue PASS" - Local1 = ObjectType (EVNT) - If ((Local1 != 0x07)) - { - Return (0x81) - } - - Reset (EVNT) - Signal (EVNT) - Local0 = Wait (EVNT, Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x82) - } - - If ((Local0 != Zero)) - { - Return (0x83) - } - - Debug = "Acquire Lvalue existing signal PASS" - Local0 = Wait (EVNT, Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x84) - } - - If ((Local0 == Zero)) - { - Return (0x85) - } - - Debug = "Acquire Lvalue signal timeout PASS" - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ Event Test" - Local0 = TEVN (0x64) - Return (Local0) - } - } - - Name (PKG0, Package (0x03) - { - 0x0123, - 0x4567, - 0x89AB - }) - Name (PKG1, Package (0x03) - { - Package (0x03) - { - 0x0123, - 0x4567, - 0x89AB - }, - - Package (0x03) - { - 0xCDEF, - 0xFEDC, - 0xBA98 - }, - - Package (0x03) - { - 0x7654, - 0x3210, - 0x1234 - } - }) - Name (PKG2, Package (0x04) - { - 0x0123, - 0x4567, - 0x89AB, - 0x8888 - }) - Name (PKG3, Package (0x05) - { - 0x0123, - 0x4567, - 0x89AB, - 0x8888, - 0x7777 - }) - Name (STR0, "ACPI permits very flexible methods of expressing a system") - Name (STR1, "MIKE permits very flexible methods of expressing a system") - Name (STR2, "Needless to say, Mike and ACPI are frequently at odds") - Name (STR3, "12345") - Name (BUF0, Buffer (0x0A) {}) - Name (BUF1, Buffer (0x0A) {}) - Name (BUF2, Buffer (0x08) {}) - Name (BUF3, Buffer (0x05) {}) - Device (SZLV) - { - Method (CMPR, 2, NotSerialized) - { - Local0 = One - If ((SizeOf (Arg0) == SizeOf (Arg1))) - { - Local0 = Zero - } - - Return (Local0) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ SizeOfLv Test" - If ((Zero != CMPR (STR0, STR1))) - { - Return (One) - } - - If ((Zero != CMPR (STR3, BUF3))) - { - Return (0x02) - } - - If ((Zero != CMPR (STR3, PKG3))) - { - Return (0x03) - } - - Local0 = STR0 /* \STR0 */ - Local1 = STR1 /* \STR1 */ - If ((SizeOf (Local0) != SizeOf (Local1))) - { - Return (0x04) - } - - Local1 = STR2 /* \STR2 */ - If ((SizeOf (Local0) == SizeOf (Local1))) - { - Return (0x05) - } - - If ((0x05 != SizeOf (BUF3))) - { - Return (0x06) - } - - Return (Zero) - } - } - - Scope (_SB) - { - Device (BYTF) - { - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ BytField Test" - Return (\_TZ.C19B.RSLT) - } - } - - Device (C005) - { - Device (C013) - { - } - } - - Method (C115, 0, NotSerialized) - { - Acquire (_GL, 0xFFFF) - Local0 = ^C005.C013.C058.C07E /* \_SB_.C005.C013.C058.C07E */ - Release (_GL) - Local0 &= 0x10 - Local1 = (Local0 >> 0x04) - If ((Local1 == Zero)) - { - Return (One) - } - Else - { - Return (Zero) - } - } - } - - OperationRegion (C018, SystemIO, 0x5028, 0x04) - Field (C018, AnyAcc, NoLock, Preserve) - { - C019, 32 - } - - OperationRegion (C01A, SystemIO, 0x5030, 0x04) - Field (C01A, ByteAcc, NoLock, Preserve) - { - C01B, 8, - C01C, 8, - C01D, 8, - C01E, 8 - } - - Mutex (C01F, 0x00) - Name (C020, Zero) - Name (C021, Zero) - Method (C022, 0, NotSerialized) - { - Acquire (C01F, 0xFFFF) - If ((C021 == Zero)) - { - Local0 = C019 /* \C019 */ - Local0 &= 0xFFFEFFFE - C019 = Local0 - C021++ - } - - Release (C01F) - } - - Scope (_SB.C005.C013) - { - Device (C058) - { - Name (_HID, "*PNP0A06") // _HID: Hardware ID - OperationRegion (C059, SystemIO, 0xE0, 0x02) - Field (C059, ByteAcc, NoLock, Preserve) - { - C05A, 8, - C05B, 8 - } - - OperationRegion (C05C, SystemIO, 0xE2, 0x02) - Field (C05C, ByteAcc, NoLock, Preserve) - { - C05D, 8, - C05E, 8 - } - - IndexField (C05D, C05E, ByteAcc, NoLock, Preserve) - { - Offset (0x82), - C05F, 8, - C060, 8, - C061, 8, - C062, 8, - C063, 8, - C064, 8, - C065, 8, - C066, 8, - C067, 8, - C068, 8, - C069, 8, - C06A, 8, - C06B, 8, - C06C, 8, - C06D, 8, - C06E, 8, - Offset (0xA0), - C06F, 8, - C070, 8, - C071, 8, - C072, 8, - C073, 8, - C074, 8, - C075, 8, - C076, 8, - C077, 8, - C078, 8, - C079, 8, - C07A, 8, - C07B, 8, - C07C, 8, - C07D, 8, - C07E, 8 - } - - OperationRegion (C07F, SystemIO, 0xE4, 0x02) - Field (C07F, ByteAcc, NoLock, Preserve) - { - C080, 8, - C081, 8 - } - - OperationRegion (C082, SystemIO, 0xE0, One) - Field (C082, ByteAcc, NoLock, Preserve) - { - C083, 8 - } - - OperationRegion (C084, SystemIO, 0xFF, One) - Field (C084, ByteAcc, NoLock, Preserve) - { - C085, 8 - } - - OperationRegion (C086, SystemIO, 0xFD, One) - Field (C086, ByteAcc, NoLock, Preserve) - { - C087, 8 - } - - Mutex (C088, 0x00) - Mutex (C089, 0x00) - Mutex (C08A, 0x00) - Mutex (C08B, 0x00) - Mutex (C08C, 0x00) - Mutex (C08D, 0x00) - Name (C08E, 0xFFFFFFFD) - Name (C08F, Zero) - Method (C0AA, 4, NotSerialized) - { - Local7 = Buffer (0x04) {} - CreateByteField (Local7, Zero, C0AB) - CreateByteField (Local7, One, C0AC) - CreateByteField (Local7, 0x02, C0AD) - CreateByteField (Local7, 0x03, C0AE) - Acquire (C08B, 0xFFFF) - Acquire (_GL, 0xFFFF) - C022 () - C06B = One - While ((Zero != C06B)) - { - Stall (0x64) - } - - C06E = Arg3 - C06D = Arg2 - C06C = Arg1 - C06B = Arg0 - While ((Zero != C06B)) - { - Stall (0x64) - } - - C0AB = C06E /* \_SB_.C005.C013.C058.C06E */ - C0AC = C06D /* \_SB_.C005.C013.C058.C06D */ - C0AD = C06C /* \_SB_.C005.C013.C058.C06C */ - C0AE = C06B /* \_SB_.C005.C013.C058.C06B */ - If ((Arg0 != 0x17)) - { - C06B = 0x02 - Stall (0x64) - } - - Release (_GL) - Release (C08B) - Return (Local7) - } - } - } - - Scope (_TZ) - { - Name (C18B, Package (0x02) - { - Package (0x02) - { - Package (0x05) - { - 0x05AC, - 0x0CD2, - 0x0D68, - 0x0DE0, - 0x0E4E - }, - - Package (0x05) - { - 0x0D04, - 0x0D9A, - 0x0DFE, - 0x0E80, - 0x0FA2 - } - }, - - Package (0x02) - { - Package (0x05) - { - 0x05AC, - 0x0CD2, - 0x0D68, - 0x0DE0, - 0x0E4E - }, - - Package (0x05) - { - 0x0D04, - 0x0D9A, - 0x0DFE, - 0x0E80, - 0x0FA2 - } - } - }) - Name (C18C, Package (0x02) - { - Package (0x02) - { - Package (0x03) - { - 0x64, - 0x4B, - 0x32 - }, - - Package (0x03) - { - 0x64, - 0x4B, - 0x32 - } - } - }) - Name (C18D, Zero) - Name (C18E, Zero) - Name (C18F, Zero) - Name (C190, Zero) - Name (C191, 0x03) - Name (C192, Zero) - Name (C193, One) - Name (C194, 0x02) - Mutex (C195, 0x00) - Name (C196, One) - Name (C197, 0x0B9C) - Name (C198, 0x0B9C) - Name (C199, 0xFFFFFFFD) - Name (C19A, Zero) - Device (C19B) - { - Name (RSLT, Zero) - Method (XINI, 0, NotSerialized) - { - C19A = \_SB.C115 () - ^^C19C._SCP (Zero) - Local1 = (0x0EB2 - 0x0AAC) - Divide (Local1, 0x0A, Local0, Local2) - \_SB.C005.C013.C058.C0AA (0x0E, Local2, Zero, Zero) - C18D = DerefOf (Index (DerefOf (Index (C18C, C19A)), Zero)) - C18E = DerefOf (Index (DerefOf (Index (C18C, C19A)), One)) - C18F = DerefOf (Index (DerefOf (Index (C18C, C19A)), 0x02)) - RSLT = One - } - } - - ThermalZone (C19C) - { - Method (_SCP, 1, NotSerialized) // _SCP: Set Cooling Policy - { - Local0 = Arg0 - If ((Local0 == Zero)) - { - C192 = Zero - C193 = One - C194 = 0x02 - C191 = 0x03 - } - Else - { - C191 = Zero - C192 = One - C193 = 0x02 - C194 = 0x03 - } - } - } - } - - Name (BUFR, Buffer (0x0A) - { - /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ - /* 0008 */ 0x00, 0x00 /* .. */ - }) - Device (DWDF) - { - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ DwrdFld Test" - CreateByteField (BUFR, Zero, BYTE) - BYTE = 0xAA - CreateWordField (BUFR, One, WORD) - WORD = 0xBBCC - CreateDWordField (BUFR, 0x03, DWRD) - DWRD = 0xDDEEFF00 - CreateByteField (BUFR, 0x07, BYT2) - BYT2 = 0x11 - CreateWordField (BUFR, 0x08, WRD2) - WRD2 = 0x2233 - Return (Zero) - } - } - - Name (B1LO, 0xAA) - Name (B1HI, 0xBB) - Method (MKW, 2, NotSerialized) - { - Local0 = (B1HI * 0x0100) - Local0 |= B1LO /* \B1LO */ - Return (Local0) - } - - Device (DVAX) - { - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ DivAddx Test" - B1LO = 0x19 - B1HI = Zero - Divide (((0x03 * MKW (B1LO, B1HI)) + 0x63), 0x64, Local4, - Local2) - If (((0x4A == Local4) && (One == Local2))) - { - Local0 = Zero - } - Else - { - Local0 = One - } - - Return (Local0) - } - } - - Device (IDX6) - { - OperationRegion (SIO, SystemIO, 0x0100, 0x02) - Field (SIO, ByteAcc, NoLock, Preserve) - { - INDX, 8, - DATA, 8 - } - - IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes) - { - AccessAs (ByteAcc, 0x00), - IFE0, 8, - IFE1, 8, - IFE2, 8, - IFE3, 8, - IFE4, 8, - IFE5, 8, - IFE6, 8, - IFE7, 8, - IFE8, 8, - IFE9, 8 - } - - Device (TST) - { - OperationRegion (SIO2, SystemIO, 0x0100, 0x02) - Field (SIO2, ByteAcc, NoLock, Preserve) - { - IND2, 8, - DAT2, 8 - } - - IndexField (IND2, DAT2, AnyAcc, NoLock, WriteAsOnes) - { - IFE0, 8, - IFE1, 8 - } - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndexOp6 Test" - Local0 = IFE0 /* \IDX6.IFE0 */ - Local1 = IFE1 /* \IDX6.IFE1 */ - Local2 = IFE2 /* \IDX6.IFE2 */ - Local3 = IFE0 /* \IDX6.IFE0 */ - Local4 = IFE1 /* \IDX6.IFE1 */ - Local5 = ^TST.IFE0 /* \IDX6.TST_.IFE0 */ - Local6 = ^TST.IFE1 /* \IDX6.TST_.IFE1 */ - Return (Zero) - } - } - - Device (IDX5) - { - Name (OSFL, Zero) - Method (MCTH, 2, Serialized) - { - If ((SizeOf (Arg0) < SizeOf (Arg1))) - { - Return (Zero) - } - - Local0 = (SizeOf (Arg0) + One) - Name (BUF0, Buffer (Local0) {}) - Name (BUF1, Buffer (Local0) {}) - BUF0 = Arg0 - BUF1 = Arg1 - Local1 = ObjectType (BUF0) - If ((Local1 != 0x03)) - { - Return (0x14) - } - - Local1 = ObjectType (BUF1) - If ((Local1 != 0x03)) - { - Return (0x15) - } - - Local0-- - While (Local0) - { - Local0-- - If ((DerefOf (Index (BUF0, Local0)) == DerefOf (Index (BUF1, Local0)))) {} - Else - { - Return (Zero) - } - } - - Return (One) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndexOp5 Test" - If (MCTH (_OS, "Microsoft Windows NT")) - { - OSFL = One - } - - If ((OSFL != One)) - { - Return (0x0B) - } - - Return (Zero) - } - } - - Scope (_SB) - { - Method (C097, 0, NotSerialized) - { - Return (One) - } - - Device (PCI2) - { - Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID - Name (_ADR, Zero) // _ADR: Address - Name (_CRS, Buffer (0x1A) // _CRS: Current Resource Settings - { - "_SB_.PCI2._CRS..........." - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0F) - } - - Device (ISA) - { - Name (_ADR, 0x00030000) // _ADR: Address - Device (EC0) - { - Name (_GPE, Zero) // _GPE: General Purpose Events - Name (_ADR, 0x00030000) // _ADR: Address - Method (_STA, 0, NotSerialized) // _STA: Status - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings - { - IO (Decode16, - 0x0062, // Range Minimum - 0x0062, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - IO (Decode16, - 0x0066, // Range Minimum - 0x0066, // Range Maximum - 0x01, // Alignment - 0x01, // Length - ) - }) - OperationRegion (RAM, SystemMemory, 0x00400000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - ADP, 1, - AFLT, 1, - BAT0, 1, - , 1, - Offset (0x04), - BPU0, 32, - BDC0, 32, - BFC0, 32, - BTC0, 32, - BDV0, 32, - BST0, 32, - BPR0, 32, - BRC0, 32, - BPV0, 32, - BTP0, 32, - BCW0, 32, - BCL0, 32, - BCG0, 32, - BG20, 32, - BMO0, 32, - BIF0, 32, - BSN0, 32, - BTY0, 32, - BTY1, 32 - } - } - } - } - - Device (IDX0) - { - Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID - Name (_PCL, Package (0x01) // _PCL: Power Consumer List - { - _SB - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - If (^^PCI2.ISA.EC0.BAT0) - { - Return (0x1F) - } - Else - { - Return (0x0F) - } - } - - Method (_BIF, 0, Serialized) // _BIF: Battery Information - { - Name (BUFR, Package (0x0D) {}) - Index (BUFR, Zero) = ^^PCI2.ISA.EC0.BPU0 /* \_SB_.PCI2.ISA_.EC0_.BPU0 */ - Index (BUFR, One) = ^^PCI2.ISA.EC0.BDC0 /* \_SB_.PCI2.ISA_.EC0_.BDC0 */ - Index (BUFR, 0x02) = ^^PCI2.ISA.EC0.BFC0 /* \_SB_.PCI2.ISA_.EC0_.BFC0 */ - Index (BUFR, 0x03) = ^^PCI2.ISA.EC0.BTC0 /* \_SB_.PCI2.ISA_.EC0_.BTC0 */ - Index (BUFR, 0x04) = ^^PCI2.ISA.EC0.BDV0 /* \_SB_.PCI2.ISA_.EC0_.BDV0 */ - Index (BUFR, 0x05) = ^^PCI2.ISA.EC0.BCW0 /* \_SB_.PCI2.ISA_.EC0_.BCW0 */ - Index (BUFR, 0x06) = ^^PCI2.ISA.EC0.BCL0 /* \_SB_.PCI2.ISA_.EC0_.BCL0 */ - Index (BUFR, 0x07) = ^^PCI2.ISA.EC0.BCG0 /* \_SB_.PCI2.ISA_.EC0_.BCG0 */ - Index (BUFR, 0x08) = ^^PCI2.ISA.EC0.BG20 /* \_SB_.PCI2.ISA_.EC0_.BG20 */ - Index (BUFR, 0x09) = "" - Index (BUFR, 0x0A) = "" - Index (BUFR, 0x0B) = "LiOn" - Index (BUFR, 0x0C) = "Chicony" - Return (BUFR) /* \_SB_.IDX0._BIF.BUFR */ - } - - Method (_BST, 0, Serialized) // _BST: Battery Status - { - Name (BUFR, Package (0x04) - { - One, - 0x0100, - 0x76543210, - 0x0180 - }) - Return (BUFR) /* \_SB_.IDX0._BST.BUFR */ - } - - Method (_BTP, 1, NotSerialized) // _BTP: Battery Trip Point - { - ^^PCI2.ISA.EC0.BTP0 = Arg0 - } - - Method (TEST, 0, Serialized) - { - Debug = "++++++++ IndexOp Test" - Name (PBUF, Package (0x04) {}) - Index (PBUF, Zero) = 0x01234567 - Index (PBUF, One) = 0x89ABCDEF - Index (PBUF, 0x02) = 0xFEDCBA98 - Index (PBUF, 0x03) = 0x76543210 - If ((DerefOf (Index (PBUF, Zero)) != 0x01234567)) - { - Return (0x10) - } - - If ((DerefOf (Index (PBUF, One)) != 0x89ABCDEF)) - { - Return (0x11) - } - - If ((DerefOf (Index (PBUF, 0x02)) != 0xFEDCBA98)) - { - Return (0x12) - } - - If ((DerefOf (Index (PBUF, 0x03)) != 0x76543210)) - { - Return (0x13) - } - - Local0 = _BIF () - Local1 = ObjectType (Local0) - If ((Local1 != 0x04)) - { - Return (0x21) - } - - Name (BUFR, Buffer (0x10) - { - /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */ - /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* ........ */ - }) - Index (BUFR, Zero) = 0x01234567 - Index (BUFR, 0x04) = 0x89ABCDEF - Index (BUFR, 0x08) = 0xFEDCBA98 - Index (BUFR, 0x0C) = 0x76543210 - If ((DerefOf (Index (BUFR, Zero)) != 0x67)) - { - Return (0x30) - } - - If ((DerefOf (Index (BUFR, One)) != Zero)) - { - Return (0x31) - } - - If ((DerefOf (Index (BUFR, 0x04)) != 0xEF)) - { - Return (0x34) - } - - If ((DerefOf (Index (BUFR, 0x08)) != 0x98)) - { - Return (0x38) - } - - If ((DerefOf (Index (BUFR, 0x0C)) != 0x10)) - { - Return (0x3C) - } - - Return (Zero) - } - } - } - - Scope (_SB) - { - OperationRegion (RAM, SystemMemory, 0x00800000, 0x0100) - Field (RAM, AnyAcc, NoLock, Preserve) - { - TREE, 3, - WRD0, 16, - WRD1, 16, - WRD2, 16, - WRD3, 16, - WRD4, 16, - DWRD, 32 - } - - Field (RAM, AnyAcc, NoLock, Preserve) - { - THRE, 3, - WD00, 16, - WD01, 16, - WD02, 16, - WD03, 16, - WD04, 16, - BYT0, 8, - BIT0, 1, - BIT1, 1, - BIT2, 1, - BIT3, 1, - BIT4, 1, - BIT5, 1, - BIT6, 1, - BIT7, 1, - BIT8, 1, - BIT9, 1, - BITA, 1, - BITB, 1, - BITC, 1, - BITD, 1, - BITE, 1, - BITF, 1, - BYTZ, 8 - } - - Device (BITI) - { - Method (MBIT, 0, NotSerialized) - { - If ((DWRD != Zero)) - { - Local0 = 0xFF00 - } - Else - { - Local0 = Zero - DWRD = 0x5A5A5A5A - If (BIT0) - { - Local0 |= One - } - - If (!BIT1) - { - Local0 |= 0x02 - } - - If (BIT2) - { - Local0 |= 0x04 - } - - If (!BIT3) - { - Local0 |= 0x08 - } - - If (!BIT4) - { - Local0 |= 0x10 - } - - If (BIT5) - { - Local0 |= 0x20 - } - - If (!BIT6) - { - Local0 |= 0x40 - } - - If (BIT7) - { - Local0 |= 0x80 - } - } - - Return (Local0) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ BitIndex Test" - DWRD = Zero - Local0 = MBIT () - Return (Local0) - } - } - } - - Scope (_SB) - { - Name (C174, 0x0D) - Name (C175, 0x08) - Device (C158) - { - Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID - Name (_PCL, Package (0x01) // _PCL: Power Consumer List - { - _SB - }) - Method (_PSR, 0, NotSerialized) // _PSR: Power Source - { - Acquire (_GL, 0xFFFF) - Release (_GL) - Local0 &= One - Return (Local0) - } - } - - Name (C176, Package (0x04) - { - "Primary", - "MultiBay", - "DockRight", - "DockLeft" - }) - Name (C177, Package (0x04) - { - 0x99F5, - 0x99F5, - 0x995F, - 0x995F - }) - Name (C178, Package (0x04) - { - Package (0x04) - { - Zero, - Zero, - 0x966B, - 0x4190 - }, - - Package (0x04) - { - Zero, - Zero, - 0x966B, - 0x4190 - }, - - Package (0x04) - { - Zero, - Zero, - 0x966B, - 0x4190 - }, - - Package (0x04) - { - Zero, - Zero, - 0x966B, - 0x4190 - } - }) - Name (C179, Package (0x04) - { - Zero, - Zero, - 0x966B, - 0x4190 - }) - Name (C17A, Package (0x04) - { - Package (0x03) - { - Zero, - Zero, - Zero - }, - - Package (0x03) - { - Zero, - Zero, - Zero - }, - - Package (0x03) - { - Zero, - Zero, - Zero - }, - - Package (0x03) - { - Zero, - Zero, - Zero - } - }) - Method (C17B, 1, Serialized) - { - Name (C17C, Package (0x0D) - { - Zero, - 0x99F5, - 0x99F5, - One, - 0x3840, - 0x1280, - 0x0AC7, - One, - One, - "2891", - "(-Unknown-)", - "LIon", - Zero - }) - Local0 = (Arg0 & 0x07) - Local4 = (Local0 >> One) - Index (C178, Local4) = C179 /* \_SB_.C179 */ - Index (C179, 0x02) = 0x1234 - Local2 = DerefOf (Index (C179, 0x02)) - If ((Local2 != 0x1234)) - { - Return (0x1234) - } - - Local2 = DerefOf (Index (DerefOf (Index (C178, Zero)), 0x02)) - If ((Local2 != 0x966B)) - { - Return (0x1234) - } - - Index (C179, 0x02) = 0x966B - Index (DerefOf (Index (C178, Zero)), 0x03) = 0x5678 - Local2 = DerefOf (Index (DerefOf (Index (C178, Zero)), 0x03)) - If ((Local2 != 0x5678)) - { - Return (0x5678) - } - - Local2 = DerefOf (Index (C179, 0x03)) - If ((Local2 != 0x4190)) - { - Return (0x5678) - } - - Index (DerefOf (Index (C178, Zero)), 0x03) = 0x4190 - Return (C17C) /* \_SB_.C17B.C17C */ - } - - Device (C154) - { - Name (_HID, "*PNP0C0A") // _HID: Hardware ID - Name (_UID, Zero) // _UID: Unique ID - Method (_BIF, 0, NotSerialized) // _BIF: Battery Information - { - Return (C17B (0x30)) - } - } - - Device (IDX3) - { - Method (LCLB, 0, Serialized) - { - Name (BUFR, Buffer (0x0A) - { - /* 0000 */ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* ........ */ - /* 0008 */ 0x08, 0x09 /* .. */ - }) - Local1 = BUFR /* \_SB_.IDX3.LCLB.BUFR */ - Local3 = ObjectType (Local1) - If ((Local3 != 0x03)) - { - Return (0x9F) - } - - Local0 = Zero - While ((Local0 < 0x05)) - { - Local2 = DerefOf (Index (Local1, Local0)) - Local3 = ObjectType (Local2) - If ((Local3 != One)) - { - Return (0x9E) - } - - If ((Local0 != Local2)) - { - Local4 = (0x90 + Local0) - Return (Local4) - } - - Local0++ - } - - Debug = "DerefOf(Index(LocalBuffer,,)) PASS" - Return (Zero) - } - - Method (LCLP, 0, Serialized) - { - Name (PKG, Package (0x0A) - { - Zero, - One, - 0x02, - 0x03, - 0x04, - 0x05, - 0x06, - 0x07, - 0x08, - 0x09 - }) - Local1 = PKG /* \_SB_.IDX3.LCLP.PKG_ */ - Local3 = ObjectType (Local1) - If ((Local3 != 0x04)) - { - Return (0x8F) - } - - Local0 = Zero - While ((Local0 < 0x05)) - { - Local2 = DerefOf (Index (Local1, Local0)) - Local3 = ObjectType (Local2) - If ((Local3 != One)) - { - Return (0x8E) - } - - If ((Local0 != Local2)) - { - Local4 = (0x80 + Local0) - Return (Local4) - } - - Local0++ - } - - Debug = "DerefOf(Index(LocalPackage,,)) PASS" - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndexOp3 Test" - Local0 = ^^C154._BIF () - Local1 = ObjectType (Local0) - If ((Local1 != 0x04)) - { - If ((Local1 == One)) - { - Return (Local0) - } - Else - { - Return (One) - } - } - - Local2 = LCLB () - If ((Local2 != Zero)) - { - Return (Local2) - } - - Local2 = LCLP () - If ((Local2 != Zero)) - { - Return (Local2) - } - - Return (Zero) - } - } - } - - Device (IDX7) - { - Name (PKG4, Package (0x05) - { - 0x02, - "A short string", - Buffer (0x04) - { - 0x0A, 0x0B, 0x0C, 0x0D /* .... */ - }, - - 0x1234, - Package (0x02) - { - IDX7, - 0x03 - } - }) - Method (TST1, 0, Serialized) - { - Name (DEST, Buffer (0x3F) - { - "Destination buffer that is longer than the short source buffer" - }) - Local1 = Index (DEST, 0x02) - Local2 = ObjectType (Local1) - If ((Local2 == 0x0E)) - { - Return (Zero) - } - Else - { - Return (One) - } - } - - Method (TST2, 0, Serialized) - { - Name (BUF0, Buffer (0x05) - { - 0x01, 0x02, 0x03, 0x04, 0x05 /* ..... */ - }) - Index (BUF0, 0x02) = 0x55 - Local0 = DerefOf (Index (BUF0, 0x02)) - If ((Local0 == 0x55)) - { - Return (Zero) - } - Else - { - Return (0x02) - } - } - - Method (TST3, 0, Serialized) - { - Name (BUF1, Buffer (0x05) - { - 0x01, 0x02, 0x03, 0x04, 0x05 /* ..... */ - }) - Local0 = Index (BUF1, One) - Local1 = DerefOf (Local0) - If ((Local1 == 0x02)) - { - Return (Zero) - } - Else - { - Return (0x03) - } - } - - Method (TST4, 0, NotSerialized) - { - Local0 = Index (PKG4, Zero) - Local1 = ObjectType (Local0) - If ((Local1 == One)) - { - Return (Zero) - } - Else - { - Return (0x04) - } - } - - Method (TST5, 0, NotSerialized) - { - Local0 = Index (PKG4, One) - Local1 = ObjectType (Local0) - If ((Local1 == 0x02)) - { - Return (Zero) - } - Else - { - Return (0x05) - } - } - - Method (TST6, 0, NotSerialized) - { - Local0 = Index (PKG4, 0x02) - Local1 = ObjectType (Local0) - If ((Local1 == 0x03)) - { - Return (Zero) - } - Else - { - Return (0x06) - } - } - - Method (TST7, 0, NotSerialized) - { - Local0 = Index (PKG4, 0x03) - Local1 = ObjectType (Local0) - If ((Local1 == One)) - { - Return (Zero) - } - Else - { - Return (0x07) - } - } - - Method (TST8, 0, NotSerialized) - { - Local0 = Index (PKG4, 0x04) - Local1 = ObjectType (Local0) - If ((Local1 == 0x04)) - { - Return (Zero) - } - Else - { - Return (0x08) - } - } - - Method (TST9, 0, NotSerialized) - { - Local0 = DerefOf (Index (PKG4, Zero)) - If ((Local0 == 0x02)) - { - Return (Zero) - } - Else - { - Return (0x09) - } - } - - Method (TSTA, 0, NotSerialized) - { - Local0 = DerefOf (Index (PKG4, One)) - Local1 = SizeOf (Local0) - If ((Local1 == 0x0E)) - { - Return (Zero) - } - Else - { - Return (0x0A) - } - } - - Method (TSTB, 0, NotSerialized) - { - Local0 = DerefOf (Index (PKG4, 0x02)) - Local1 = SizeOf (Local0) - If ((Local1 == 0x04)) - { - Return (Zero) - } - Else - { - Return (0x0B) - } - } - - Method (TSTC, 0, NotSerialized) - { - Local0 = DerefOf (Index (PKG4, 0x03)) - If ((Local0 == 0x1234)) - { - Return (Zero) - } - Else - { - Return (0x0C) - } - } - - Method (TSTD, 0, NotSerialized) - { - Local0 = DerefOf (Index (PKG4, 0x04)) - Local1 = SizeOf (Local0) - If ((Local1 == 0x02)) - { - Return (Zero) - } - Else - { - Return (0x0D) - } - } - - Method (TSTE, 0, NotSerialized) - { - Local0 = DerefOf (Index (PKG4, 0x02)) - Local1 = DerefOf (Index (Local0, One)) - If ((Local1 == 0x0B)) - { - Return (Zero) - } - Else - { - Return (0x0E) - } - } - - Method (TSTF, 0, Serialized) - { - Name (SRCB, Buffer (0x0C) {}) - SRCB = "Short Buffer" - Name (DEST, Buffer (0x3F) - { - "Destination buffer that is longer than the short source buffer" - }) - Index (DEST, 0x02) = SRCB /* \IDX7.TSTF.SRCB */ - Local0 = DerefOf (Index (DEST, 0x02)) - If ((Local0 != 0x72)) - { - Return ((Local0 | 0x1000)) - } - - Return (Zero) - } - - Method (TSTG, 0, Serialized) - { - Name (SRCB, Buffer (0x0C) {}) - SRCB = "Short Buffer" - Name (DEST, Buffer (0x3F) - { - "Destination buffer that is longer than the short source buffer" - }) - Index (DEST, 0x02) = SRCB /* \IDX7.TSTG.SRCB */ - Local0 = DerefOf (Index (DEST, 0x03)) - If ((Local0 != 0x74)) - { - Return ((Local0 | 0x2000)) - } - - Local0 = DerefOf (Index (DEST, 0x04)) - If ((Local0 != 0x69)) - { - Return ((Local0 | 0x2100)) - } - - Local0 = DerefOf (Index (DEST, 0x05)) - If ((Local0 != 0x6E)) - { - Return ((Local0 | 0x2200)) - } - - Local0 = DerefOf (Index (DEST, 0x06)) - If ((Local0 != 0x61)) - { - Return ((Local0 | 0x2300)) - } - - Local0 = DerefOf (Index (DEST, 0x07)) - If ((Local0 != 0x74)) - { - Return ((Local0 | 0x2400)) - } - - Local0 = DerefOf (Index (DEST, 0x0E)) - If ((Local0 != 0x66)) - { - Return ((Local0 | 0x2400)) - } - - Return (Zero) - } - - Method (TSTH, 0, Serialized) - { - Name (DBUF, Buffer (0x1B) - { - "abcdefghijklmnopqrstuvwxyz" - }) - Index (DBUF, 0x02) = 0x12345678 - Local0 = DerefOf (Index (DBUF, 0x02)) - If ((Local0 != 0x78)) - { - Return ((Local0 | 0x3000)) - } - - Local0 = DerefOf (Index (DBUF, 0x03)) - If ((Local0 != 0x64)) - { - Return ((Local0 | 0x3100)) - } - - Local0 = DerefOf (Index (DBUF, 0x04)) - If ((Local0 != 0x65)) - { - Return ((Local0 | 0x3200)) - } - - Local0 = DerefOf (Index (DBUF, 0x05)) - If ((Local0 != 0x66)) - { - Return ((Local0 | 0x3300)) - } - - Return (Zero) - } - - Method (TSTI, 0, Serialized) - { - Name (DBUF, Buffer (0x1B) - { - "abcdefghijklmnopqrstuvwxyz" - }) - Index (DBUF, 0x02) = "ABCDEFGH" - Local0 = DerefOf (Index (DBUF, 0x02)) - If ((Local0 != 0x48)) - { - Return ((Local0 | 0x4000)) - } - - Local0 = DerefOf (Index (DBUF, 0x03)) - If ((Local0 != 0x64)) - { - Return ((Local0 | 0x4100)) - } - - Local0 = DerefOf (Index (DBUF, 0x04)) - If ((Local0 != 0x65)) - { - Return ((Local0 | 0x4200)) - } - - Local0 = DerefOf (Index (DBUF, 0x05)) - If ((Local0 != 0x66)) - { - Return ((Local0 | 0x4300)) - } - - Return (Zero) - } - - Method (TSTJ, 0, Serialized) - { - Name (DBUF, Buffer (0x1B) - { - "abcdefghijklmnopqrstuvwxyz" - }) - Index (DBUF, 0x02) = 0x1234 - Local0 = DerefOf (Index (DBUF, 0x02)) - If ((Local0 != 0x34)) - { - Return ((Local0 | 0x3000)) - } - - Local0 = DerefOf (Index (DBUF, 0x03)) - If ((Local0 != 0x64)) - { - Return ((Local0 | 0x3100)) - } - - Local0 = DerefOf (Index (DBUF, 0x04)) - If ((Local0 != 0x65)) - { - Return ((Local0 | 0x3200)) - } - - Local0 = DerefOf (Index (DBUF, 0x05)) - If ((Local0 != 0x66)) - { - Return ((Local0 | 0x3300)) - } - - Return (Zero) - } - - Method (TSTK, 0, Serialized) - { - Name (DBUF, Buffer (0x1B) - { - "abcdefghijklmnopqrstuvwxyz" - }) - Index (DBUF, 0x02) = 0x00123456 - Local0 = DerefOf (Index (DBUF, 0x02)) - If ((Local0 != 0x56)) - { - Return ((Local0 | 0x3000)) - } - - Local0 = DerefOf (Index (DBUF, 0x03)) - If ((Local0 != 0x64)) - { - Return ((Local0 | 0x3100)) - } - - Local0 = DerefOf (Index (DBUF, 0x04)) - If ((Local0 != 0x65)) - { - Return ((Local0 | 0x3200)) - } - - Local0 = DerefOf (Index (DBUF, 0x05)) - If ((Local0 != 0x66)) - { - Return ((Local0 | 0x3300)) - } - - Return (Zero) - } - - Method (TSTL, 0, Serialized) - { - Name (DBUF, Buffer (0x1B) - { - "abcdefghijklmnopqrstuvwxyz" - }) - Index (DBUF, 0x02) = 0x12 - Local0 = DerefOf (Index (DBUF, 0x02)) - If ((Local0 != 0x12)) - { - Return ((Local0 | 0x3000)) - } - - Local0 = DerefOf (Index (DBUF, 0x03)) - If ((Local0 != 0x64)) - { - Return ((Local0 | 0x3100)) - } - - Local0 = DerefOf (Index (DBUF, 0x04)) - If ((Local0 != 0x65)) - { - Return ((Local0 | 0x3200)) - } - - Local0 = DerefOf (Index (DBUF, 0x05)) - If ((Local0 != 0x66)) - { - Return ((Local0 | 0x3300)) - } - - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndexOp7 Test" - Local0 = TST1 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST2 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST3 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST4 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST5 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST6 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST7 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST8 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TST9 () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTA () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTB () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTC () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTD () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTE () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTG () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTH () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTJ () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTK () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Local0 = TSTL () - If ((Local0 > Zero)) - { - Return (Local0) - } - - Return (Local0) - } - } - - Device (MTCH) - { - Method (TEST, 0, Serialized) - { - Debug = "++++++++ MatchOp Test" - Name (TIM0, Package (0x08) - { - Package (0x04) - { - 0x78, - 0xB4, - 0xF0, - 0x0384 - }, - - Package (0x04) - { - 0x23, - 0x21, - 0x10, - Zero - }, - - Package (0x04) - { - 0x0B, - 0x09, - 0x04, - Zero - }, - - Package (0x05) - { - 0x70, - 0x49, - 0x36, - 0x27, - 0x19 - }, - - Package (0x05) - { - Zero, - One, - 0x02, - One, - 0x02 - }, - - Package (0x05) - { - Zero, - Zero, - Zero, - One, - One - }, - - Package (0x04) - { - 0x04, - 0x03, - 0x02, - Zero - }, - - Package (0x04) - { - 0x02, - One, - Zero, - Zero - } - }) - Name (TMD0, Buffer (0x14) - { - 0xFF, 0xFF, 0xFF, 0xFF /* .... */ - }) - CreateDWordField (TMD0, Zero, PIO0) - CreateDWordField (TMD0, 0x04, DMA0) - CreateDWordField (TMD0, 0x08, PIO1) - CreateDWordField (TMD0, 0x0C, DMA1) - CreateDWordField (TMD0, 0x10, CHNF) - Local3 = PIO0 /* \MTCH.TEST.PIO0 */ - Local2 = ObjectType (Local3) - If ((Local2 != One)) - { - Return (0x02) - } - - If ((Local3 != Ones)) - { - Return (0x03) - } - - Debug = "DWordField PASS" - Local5 = Zero - Local6 = Match (DerefOf (Index (TIM0, One)), MLE, Local5, MTR, Zero, - Zero) - Local2 = ObjectType (Local6) - If ((Local2 != One)) - { - Return (0x04) - } - - Debug = "Match(DerefOf(Index(TIM0,1)),... PASS" - Local4 = DerefOf (Index (TIM0, One)) - Local2 = ObjectType (Local4) - If ((Local2 != 0x04)) - { - Return (0x05) - } - - Debug = "DerefOf(Index(TIM0,1)),... PASS" - Local0 = (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, - Zero) & 0x03) - Local2 = ObjectType (Local0) - If ((Local2 != One)) - { - Return (0x06) - } - - If ((Local0 != 0x03)) - { - Return (0x07) - } - - Debug = "And(Match(DerefOf(Index(TIM0,0)),... PASS" - Local4 = DerefOf (Index (TIM0, One)) - Local2 = ObjectType (Local4) - If ((Local2 != 0x04)) - { - Return (0x08) - } - - Debug = "DerefOf(Index(TIM0,1)),... PASS again" - Local4 = DerefOf (Index (TIM0, One)) - Local2 = ObjectType (Local4) - If ((Local2 != 0x04)) - { - Return (0x09) - } - - Debug = "DerefOf(Index(TIM0,1)),... PASS again" - Local1 = DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)) - Local2 = ObjectType (Local1) - If ((Local2 != One)) - { - Return (0x0A) - } - - If ((Local1 != Zero)) - { - Return (0x0B) - } - - Debug = "DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS" - Local4 = DerefOf (Index (TIM0, One)) - Local2 = ObjectType (Local4) - If ((Local2 != 0x04)) - { - Return (0x0C) - } - - Debug = "DerefOf(Index(TIM0,1)),... PASS again" - Local1 = DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)) - Local2 = ObjectType (Local1) - If ((Local2 != One)) - { - Return (0x0D) - } - - If ((Local1 != Zero)) - { - Return (0x0E) - } - - Debug = "DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS again" - Local4 = DerefOf (Index (TIM0, One)) - Local2 = ObjectType (Local4) - If ((Local2 != 0x04)) - { - Return (0x0F) - } - - Debug = "DerefOf(Index(TIM0,1)),... PASS again" - Return (Zero) - } - } - - Device (WHLB) - { - Name (CNT0, Zero) - Name (CNT1, Zero) - Method (TEST, 0, NotSerialized) - { - CNT0 = Zero - While ((CNT0 < 0x04)) - { - CNT1 = Zero - While ((CNT1 < 0x0A)) - { - If ((CNT1 == One)) - { - Break - } - - CNT1++ - } - - If ((CNT1 != One)) - { - Return (0x07) - } - - CNT0++ - } - - If ((CNT0 != 0x04)) - { - Return (0x08) - } - - Debug = "While/While/If/Break PASS" - Debug = "++++++++ WhileBrk Test" - CNT0 = Zero - While ((CNT0 < 0x0A)) - { - Break - CNT0++ - } - - If ((CNT0 != Zero)) - { - Return (0x04) - } - - CNT0 = Zero - While ((CNT0 < 0x0A)) - { - CNT0++ - } - - If ((CNT0 != 0x0A)) - { - Return (One) - } - - While ((CNT0 > Zero)) - { - CNT0-- - } - - If ((CNT0 != Zero)) - { - Return (0x02) - } - - Debug = "While/Break PASS" - CNT0 = Zero - While ((CNT0 < 0x0A)) - { - If ((CNT0 == 0x05)) - { - Break - CNT0 = 0x14 - } - - CNT0++ - } - - If ((CNT0 > 0x13)) - { - Return (0x05) - } - - If ((CNT0 != 0x05)) - { - Return (0x06) - } - - Debug = "While/If/Break PASS" - Return (Zero) - } - } - - Scope (_SB) - { - Device (MEM) - { - Name (_HID, EisaId ("PNP0C01") /* System Board */) // _HID: Hardware ID - Name (_STA, 0x0F) // _STA: Status - OperationRegion (SMEM, SystemMemory, 0x00800000, 0x0100) - Field (SMEM, AnyAcc, NoLock, Preserve) - { - SMD0, 32, - SMD1, 32, - SMD2, 32, - SMD3, 32 - } - - Field (SMEM, AnyAcc, NoLock, Preserve) - { - SME0, 69, - SME1, 97 - } - - OperationRegion (SRAM, SystemMemory, 0x100B0000, 0xF000) - Field (SRAM, AnyAcc, NoLock, Preserve) - { - Offset (0x6800), - IEAX, 32, - IEBX, 32, - IECX, 32, - IEDX, 32, - IESI, 32, - IEDI, 32, - IEBP, 32, - Offset (0x6820), - OEAX, 32, - OEBX, 32, - OECX, 32, - OEDX, 32, - OESI, 32, - OEDI, 32, - OEBP, 32, - Offset (0x68FF), - ACST, 1, - BES1, 1, - BES2, 1, - Offset (0x6900), - BMN1, 104, - BSN1, 88, - BTP1, 72, - BPU1, 32, - BDC1, 32, - BLF1, 32, - BTC1, 32, - BDV1, 32, - BST1, 32, - BPR1, 32, - BRC1, 32, - BPV1, 32, - Offset (0x6949), - BCW1, 32, - BCL1, 32, - BG11, 32, - BG21, 32, - BOI1, 32, - Offset (0x6A03), - BMN2, 104, - BSN2, 88, - BTP2, 72, - BPU2, 32, - BDC2, 32, - BLF2, 32, - BTC2, 32, - BDV2, 32, - BST2, 32, - BPR2, 32, - BRC2, 32, - BPV2, 32, - Offset (0x6A4C), - BCW2, 32, - BCL2, 32, - BG12, 32, - BG22, 32, - BOI2, 32, - Offset (0x6B03), - AC01, 16, - AC11, 16, - PSV1, 16, - CRT1, 16, - TMP1, 16, - AST1, 16, - AC21, 16, - AC31, 16, - AC02, 16, - AC12, 16, - PSV2, 16, - CRT2, 16, - TMP2, 16, - AST2, 16, - AC22, 16, - AC32, 16, - AC03, 16, - AC13, 16, - PSV3, 16, - CRT3, 16, - TMP3, 16, - AST3, 16, - AC23, 16, - AC33, 16, - Offset (0x6B43), - TMPF, 16, - Offset (0x6BF3), - FANH, 1, - FANL, 7, - TF11, 1, - TF21, 1, - TF31, 1, - , 1, - TF10, 1, - TF20, 1, - TF30, 1, - Offset (0x6BF5), - TP11, 1, - TP21, 1, - TP31, 1, - Offset (0x6C03), - GP50, 1, - GP51, 1, - GP52, 1, - GP53, 1, - Offset (0x6C04), - GP60, 1, - GP61, 1, - GP62, 1, - GP63, 1, - GP64, 1, - GP65, 1, - GP66, 1, - Offset (0x6C05), - GP70, 1, - GP71, 1, - GP72, 1, - GP73, 1, - GP74, 1, - GP75, 1, - GP76, 1, - Offset (0x6C06), - WED0, 1, - WED1, 1, - WED2, 1, - WED3, 1, - WED4, 1, - Offset (0x6C07), - SBL0, 1, - SBL1, 1, - SBL2, 1, - SBL3, 1, - Offset (0x6C08), - LIDS, 1, - VALF, 1, - , 2, - DCKI, 1, - DCKF, 1, - BT1F, 1, - BT2F, 1, - Offset (0x6D03), - HKCD, 8, - Offset (0x6D05), - DLID, 32, - DSRN, 32, - Offset (0x6D11), - BDID, 32, - DSPW, 1, - VGAF, 1, - VWE0, 1, - VWE1, 1, - PPSC, 1, - SPSC, 1, - EWLD, 1, - EWPS, 1, - Offset (0x7003), - PRES, 32768 - } - } - - Device (BAT1) - { - Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID - Name (_UID, One) // _UID: Unique ID - Name (_PCL, Package (0x01) // _PCL: Power Consumer List - { - _SB - }) - Method (_STA, 0, NotSerialized) // _STA: Status - { - If (^^MEM.BES1) - { - Return (0x1F) - } - Else - { - Return (0x0F) - } - } - - Method (_BIF, 0, Serialized) // _BIF: Battery Information - { - Name (BUFR, Package (0x0D) {}) - Index (BUFR, Zero) = ^^MEM.BPU1 /* \_SB_.MEM_.BPU1 */ - Index (BUFR, One) = ^^MEM.BDC1 /* \_SB_.MEM_.BDC1 */ - Index (BUFR, 0x02) = ^^MEM.BLF1 /* \_SB_.MEM_.BLF1 */ - Index (BUFR, 0x03) = ^^MEM.BTC1 /* \_SB_.MEM_.BTC1 */ - Index (BUFR, 0x04) = ^^MEM.BDV1 /* \_SB_.MEM_.BDV1 */ - Index (BUFR, 0x05) = ^^MEM.BCW1 /* \_SB_.MEM_.BCW1 */ - Index (BUFR, 0x06) = ^^MEM.BCL1 /* \_SB_.MEM_.BCL1 */ - Index (BUFR, 0x07) = ^^MEM.BG11 /* \_SB_.MEM_.BG11 */ - Index (BUFR, 0x08) = ^^MEM.BG21 /* \_SB_.MEM_.BG21 */ - Index (BUFR, 0x09) = ^^MEM.BMN1 /* \_SB_.MEM_.BMN1 */ - Index (BUFR, 0x0A) = ^^MEM.BSN1 /* \_SB_.MEM_.BSN1 */ - Index (BUFR, 0x0B) = ^^MEM.BTP1 /* \_SB_.MEM_.BTP1 */ - Index (BUFR, 0x0C) = ^^MEM.BOI1 /* \_SB_.MEM_.BOI1 */ - Return (BUFR) /* \_SB_.BAT1._BIF.BUFR */ - } - } - - Device (IDX2) - { - Method (B2IB, 0, Serialized) - { - Name (SRCB, Buffer (0x0D) - { - "Short Buffer" - }) - Name (DEST, Buffer (0x3F) - { - "Destination buffer that is longer than the short source buffer" - }) - Local1 = Index (DEST, 0x02) - Local2 = ObjectType (Local1) - If ((Local2 != 0x0E)) - { - Return (0x61) - } - - Local3 = DerefOf (Local1) - Local4 = ObjectType (Local3) - If ((Local4 != One)) - { - Return (0x62) - } - Else - { - If ((Local3 != 0x73)) - { - Return (0x63) - } - } - - Debug = "DerefOf(Index(Buffer,,)) PASS" - Index (DEST, 0x02) = SRCB /* \_SB_.IDX2.B2IB.SRCB */ - Local0 = DerefOf (Index (DEST, 0x03)) - If ((Local0 != 0x74)) - { - If ((Local0 == 0x68)) - { - Return (0x68) - } - Else - { - Return (0x69) - } - } - - Local0 = DerefOf (Index (DEST, 0x0E)) - If ((Local0 != 0x66)) - { - If ((Local0 == Zero)) - { - Return (0x6A) - } - Else - { - Return (0x6B) - } - } - - Debug = "Store(SRCB,Index(Buffer,,)) PASS" - Index (SRCB, One) = 0x6A - Local0 = DerefOf (Index (SRCB, One)) - If ((Local0 != 0x6A)) - { - Return (0x71) - } - - Local0 = DerefOf (Index (DEST, 0x03)) - If ((Local0 != 0x74)) - { - If ((Local0 == 0x6A)) - { - Return (0x72) - } - Else - { - Return (0x73) - } - } - - Index (DEST, 0x04) = 0x6B - Local0 = DerefOf (Index (DEST, 0x04)) - If ((Local0 != 0x6B)) - { - Return (0x74) - } - - Local0 = DerefOf (Index (SRCB, 0x02)) - If ((Local0 != 0x6F)) - { - If ((Local0 == 0x6B)) - { - Return (0x75) - } - Else - { - Return (0x76) - } - } - - Debug = "SRCB and DEST independent PASS" - Index (DEST, 0x02) = "New Buff" - Local0 = DerefOf (Index (DEST, 0x02)) - If ((Local0 != 0x4E)) - { - Return (0x81) - } - - Local0 = DerefOf (Index (DEST, 0x06)) - If ((Local0 != 0x61)) - { - Return (0x82) - } - - Local0 = DerefOf (Index (DEST, 0x0A)) - If ((Local0 != 0x6E)) - { - Return (0x83) - } - - Debug = "Store(String,Index) PASS" - Return (Zero) - } - - Method (FB2P, 0, Serialized) - { - Name (DEST, Package (0x02) {}) - ^^MEM.SMD0 = 0x01234567 - ^^MEM.SMD1 = 0x89ABCDEF - ^^MEM.SMD2 = 0xFEDCBA98 - ^^MEM.SMD3 = 0x76543210 - Index (DEST, Zero) = ^^MEM.SME0 /* \_SB_.MEM_.SME0 */ - Index (DEST, One) = ^^MEM.SME1 /* \_SB_.MEM_.SME1 */ - Local0 = DerefOf (Index (DEST, Zero)) - Local1 = DerefOf (Index (DEST, One)) - Local2 = ObjectType (Local0) - If ((Local2 != 0x03)) - { - Return (0x11) - } - - Local3 = ObjectType (Local1) - If ((Local3 != 0x03)) - { - Return (0x12) - } - - Local4 = DerefOf (Index (DerefOf (Index (DEST, Zero)), Zero)) - If ((Local4 != 0x67)) - { - Return (0x13) - } - - Local4 = DerefOf (Index (DerefOf (Index (DEST, Zero)), One)) - If ((Local4 != 0x45)) - { - Return (0x14) - } - - Local4 = DerefOf (Index (DerefOf (Index (DEST, Zero)), 0x04)) - If ((Local4 != 0xEF)) - { - Return (0x15) - } - - Local4 = DerefOf (Index (DerefOf (Index (DEST, Zero)), 0x05)) - If ((Local4 != 0xCD)) - { - Return (0x16) - } - - Debug = "Store(Mem,PkgElement) PASS" - ^^MEM.SMD0 = 0x12345678 - Local5 = DerefOf (Index (DerefOf (Index (DEST, Zero)), Zero)) - If ((Local5 != 0x67)) - { - Return (0x21) - } - - Local5 = DerefOf (Index (DerefOf (Index (DEST, Zero)), One)) - If ((Local5 != 0x45)) - { - Return (0x22) - } - - Index (DerefOf (Index (DEST, Zero)), Zero) = 0x30 - Local5 = DerefOf (Index (DerefOf (Index (DEST, Zero)), Zero)) - If ((Local5 != 0x30)) - { - Return (0x23) - } - - Local5 = ^^MEM.SMD0 /* \_SB_.MEM_.SMD0 */ - If ((Local5 != 0x12345678)) - { - Return (0x24) - } - - Debug = "Mem and Pkg independent PASS" - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ IndexOp2 Test" - Local0 = ^^BAT1._BIF () - Local1 = ObjectType (Local0) - If ((Local1 != 0x04)) - { - Return (0x02) - } - - Local2 = B2IB () - Local3 = ObjectType (Local2) - If ((Local3 != One)) - { - Return (0x04) - } - - If ((Local2 != Zero)) - { - Return (Local2) - } - - Local2 = FB2P () - Local3 = ObjectType (Local2) - If ((Local3 != One)) - { - Return (0x05) - } - - If ((Local2 != Zero)) - { - Return (Local2) - } - - Return (Zero) - } - } - } - - Device (SIZO) - { - Method (SAR0, 2, NotSerialized) - { - Local0 = SizeOf (Arg0) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x21) - } - - If ((Local0 != Arg1)) - { - Return (0x22) - } - - Return (Zero) - } - - Method (SARG, 0, Serialized) - { - Name (BUFR, Buffer (0x0C) {}) - Name (BUF1, Buffer (0x05) - { - 0x01, 0x02, 0x03, 0x04, 0x05 /* ..... */ - }) - Name (PKG0, Package (0x04) {}) - Name (STR0, "String") - Name (PKG1, Package (0x04) - { - BUFR, - "String2", - STR0, - PKG0 - }) - Name (PKG2, Package (0x04) - { - Buffer (0x0F) {}, - "String 1", - Package (0x02) {} - }) - Local0 = SAR0 (BUFR, 0x0C) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x23) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=BUFR) PASS" - Local0 = SAR0 (PKG0, 0x04) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x24) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=PKG0) PASS" - Local0 = SAR0 (STR0, 0x06) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x25) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=STR0) PASS" - Local0 = SAR0 ("String", 0x06) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x26) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=String) PASS" - Index (BUF1, 0x02) = 0x55 - Local0 = SAR0 (Index (PKG1, Zero), 0x0C) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x28) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=PackageBuffer NTE Reference Element) PASS" - Local0 = SAR0 (Index (PKG1, One), 0x07) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x29) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=Package String Element) PASS" - Local0 = SAR0 (Index (PKG1, 0x02), 0x06) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x2A) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=Package String NTE Reference Element) PASS" - Local0 = SAR0 (Index (PKG1, 0x03), 0x04) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x2B) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=Package Package NTE Reference Element) PASS" - Local0 = SAR0 (Index (PKG2, Zero), 0x0F) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x2B) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=Package Buffer Element) PASS" - Local0 = SAR0 (Index (PKG2, One), 0x08) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x2B) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=Package String Element) PASS" - Local0 = SAR0 (Index (PKG2, 0x02), 0x02) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x2B) - } - - If ((Local0 != Zero)) - { - Return (Local0) - } - - Debug = "SizeOf(Arg=Package Package Element) PASS" - Debug = "SizeOf(Arg) PASS" - Return (Zero) - } - - Method (SBUF, 0, Serialized) - { - Name (BUFR, Buffer (0x0C) {}) - Local0 = SizeOf (BUFR) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x31) - } - - If ((Local0 != 0x0C)) - { - Return (0x32) - } - - Debug = "SizeOf(BUFR) PASS" - Return (Zero) - } - - Method (SLOC, 0, Serialized) - { - Name (BUFR, Buffer (0x0C) {}) - Name (STR0, "String") - Name (PKG0, Package (0x04) {}) - Local2 = BUFR /* \SIZO.SLOC.BUFR */ - Local0 = SizeOf (Local2) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x51) - } - - If ((Local0 != 0x0C)) - { - Return (0x52) - } - - Debug = "SizeOf(Local2=Buffer) PASS" - Local2 = STR0 /* \SIZO.SLOC.STR0 */ - Local0 = SizeOf (Local2) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x53) - } - - If ((Local0 != 0x06)) - { - Return (0x54) - } - - Debug = "SizeOf(Local2=String) PASS" - Local2 = PKG0 /* \SIZO.SLOC.PKG0 */ - Local0 = SizeOf (Local2) - Local1 = ObjectType (Local0) - If ((Local1 != One)) - { - Return (0x55) - } - - If ((Local0 != 0x04)) - { - Return (0x56) - } - - Debug = "SizeOf(Local2=Package) PASS" - Return (Zero) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ SizeOf Test" - Local0 = _OS /* \_OS_ */ - Local3 = SizeOf (_OS) - Local4 = ObjectType (Local3) - If ((Local4 != One)) - { - Return (0x61) - } - - Local0 = _OS /* \_OS_ */ - Local1 = SARG () - Local2 = ObjectType (Local1) - If ((Local2 != One)) - { - Return (0x62) - } - - If ((Local1 != Zero)) - { - Return (Local1) - } - - Local1 = SBUF () - Local2 = ObjectType (Local1) - If ((Local2 != One)) - { - Return (0x63) - } - - If ((Local1 != Zero)) - { - Return (Local1) - } - - Local1 = SLOC () - Local2 = ObjectType (Local1) - If ((Local2 != One)) - { - Return (0x65) - } - - If ((Local1 != Zero)) - { - Return (Local1) - } - - Return (Zero) - } - } - - Scope (_SB) - { - OperationRegion (RAM1, SystemMemory, 0x00400000, 0x0A) - Field (RAM1, AnyAcc, NoLock, Preserve) - { - BI1T, 1, - BI2T, 2, - BI3T, 3, - LST2, 2 - } - - Field (RAM1, WordAcc, NoLock, WriteAsZeros) - { - WRD, 16 - } - - Field (RAM1, ByteAcc, NoLock, WriteAsOnes) - { - BYTE, 8 - } - - Field (RAM1, ByteAcc, NoLock, Preserve) - { - SMIC, 8, - SMID, 8 - } - - Device (MBIT) - { - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - BI1T = Zero - BI2T = 0x03 - BI3T = 0x07 - LST2 = Zero - } - } - - Device (MWRD) - { - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - WRD = Zero - } - } - - Device (MBYT) - { - Method (_INI, 0, NotSerialized) // _INI: Initialize - { - BYTE = Zero - SMIC = 0x0C - SMID = 0x0D - } - } - - Method (SMIX, 0, NotSerialized) - { - Return (BYTE) /* \_SB_.BYTE */ - } - - Method (EVNT, 0, NotSerialized) - { - Local0 = SMIX () - Notify (_SB, 0x29) // Reserved - If ((Local0 & One)) - { - Notify (SMIS, 0x21) // Reserved - } - - If ((Local0 & 0x02)) - { - Notify (SMIS, 0x22) // Reserved - } - - If ((Local0 & 0x04)) - { - Notify (SMIS, 0x24) // Reserved - } - - If ((Local0 & 0x08)) - { - Notify (SMIS, 0x28) // Reserved - } - } - - Method (NTFY, 0, NotSerialized) - { - Notify (_SB, One) // Device Check - Notify (\_TZ.TZ1, 0x02) // Device Wake - Notify (\_PR.CPU0, 0x03) // Eject Request - Notify (_SB, 0x81) // Information Change - Notify (\_TZ.TZ1, 0x82) // Thermal Device List Change - Notify (\_PR.CPU0, 0x83) // Device-Specific Change - } - - Device (SMIS) - { - Method (BINK, 0, NotSerialized) - { - Local0 = Zero - If ((SMID != 0x0D)) - { - Local0 |= 0x80 - } - - If ((SMIC != 0x0C)) - { - Local0 |= 0x40 - } - - If ((BYTE != Zero)) - { - Local0 |= 0x20 - } - - If ((WRD != Zero)) - { - Local0 |= 0x10 - } - - If ((LST2 != Zero)) - { - Local0 |= 0x08 - } - - If ((BI3T != 0x07)) - { - Local0 |= 0x04 - } - - If ((BI2T != 0x03)) - { - Local0 |= 0x02 - } - - If ((BI1T != Zero)) - { - Local0 |= One - } - - Return (Local0) - } - - Method (TEST, 0, NotSerialized) - { - Debug = "++++++++ SmiShare Test" - BYTE = 0x20 - EVNT () - BYTE = 0x21 - EVNT () - BYTE = 0x22 - EVNT () - BYTE = 0x23 - EVNT () - NTFY () - Return (Zero) - } - } - - Device (CNDT) - { - Method (TEST, 0, NotSerialized) - { - If (ECOK ()) - { - Return ("Broken") - } - Else - { - Return ("Works") - } - } - - Method (ECOK, 0, NotSerialized) - { - Return (Zero) - } - } - } - - Name (WQAB, Buffer (0x1A64) - { - /* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, /* FOMB.... */ - /* 0008 */ 0x54, 0x1A, 0x00, 0x00, 0xBA, 0xAD, 0x00, 0x00, /* T....... */ - /* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, /* DS...}.T */ - /* 0018 */ 0x98, 0xBD, 0x92, 0x00, 0x01, 0x06, 0x18, 0x42, /* .......B */ - /* 0020 */ 0x10, 0x47, 0x10, 0x92, 0x46, 0x62, 0x02, 0x89, /* .G..Fb.. */ - /* 0028 */ 0x80, 0x90, 0x18, 0x18, 0x14, 0x81, 0x85, 0x00, /* ........ */ - /* 0030 */ 0x49, 0x02, 0x88, 0xC4, 0x41, 0xE1, 0x20, 0xD4, /* I...A. . */ - /* 0038 */ 0x9F, 0x40, 0x7E, 0x05, 0x20, 0x74, 0x28, 0x40, /* .@~. t(@ */ - /* 0040 */ 0xA6, 0x00, 0x83, 0x02, 0x9C, 0x22, 0x88, 0xA0, /* .....".. */ - /* 0048 */ 0x57, 0x01, 0x36, 0x05, 0x98, 0x14, 0x60, 0x51, /* W.6...`Q */ - /* 0050 */ 0x80, 0x76, 0x01, 0x96, 0x05, 0xE8, 0x16, 0x20, /* .v..... */ - /* 0058 */ 0x1D, 0x96, 0x88, 0x04, 0x47, 0x89, 0x01, 0x47, /* ....G..G */ - /* 0060 */ 0xE9, 0xC4, 0x16, 0x6E, 0xD8, 0xE0, 0x85, 0xA2, /* ...n.... */ - /* 0068 */ 0x68, 0x06, 0x51, 0x12, 0x94, 0x8B, 0x20, 0x5D, /* h.Q... ] */ - /* 0070 */ 0x10, 0x52, 0x2E, 0xC0, 0x37, 0x82, 0x06, 0x10, /* .R..7... */ - /* 0078 */ 0xA5, 0x77, 0x01, 0xB6, 0x05, 0x98, 0x86, 0x27, /* .w.....' */ - /* 0080 */ 0xD2, 0x20, 0xE4, 0x60, 0x08, 0x54, 0xCE, 0x80, /* . .`.T.. */ - /* 0088 */ 0x20, 0x69, 0x44, 0x21, 0x1E, 0xA7, 0x44, 0x08, /* iD!..D. */ - /* 0090 */ 0x0A, 0x84, 0x90, 0xD4, 0xF1, 0xA0, 0xA0, 0x71, /* .......q */ - /* 0098 */ 0x88, 0xAD, 0xCE, 0x46, 0x93, 0xA9, 0x74, 0x7E, /* ...F..t~ */ - /* 00A0 */ 0x48, 0x82, 0x70, 0xC6, 0x2A, 0x7E, 0x3A, 0x9A, /* H.p.*~:. */ - /* 00A8 */ 0xD0, 0xD9, 0x9C, 0x60, 0xE7, 0x18, 0x72, 0x3C, /* ...`..r< */ - /* 00B0 */ 0x48, 0xF4, 0x20, 0xB8, 0x00, 0x0F, 0x1C, 0x2C, /* H. ...., */ - /* 00B8 */ 0x34, 0x84, 0x22, 0x6B, 0x80, 0xC1, 0x8C, 0xDD, /* 4."k.... */ - /* 00C0 */ 0x63, 0xB1, 0x0B, 0x4E, 0x0A, 0xEC, 0x61, 0xB3, /* c..N..a. */ - /* 00C8 */ 0x01, 0x19, 0xA2, 0x24, 0x38, 0xD4, 0x11, 0xC0, /* ...$8... */ - /* 00D0 */ 0x12, 0x05, 0x98, 0x1F, 0x87, 0x0C, 0x0F, 0x95, /* ........ */ - /* 00D8 */ 0x8C, 0x25, 0x24, 0x1B, 0xAB, 0x87, 0xC2, 0xA5, /* .%$..... */ - /* 00E0 */ 0x40, 0x68, 0x6C, 0x27, 0xED, 0x19, 0x45, 0x2C, /* @hl'..E, */ - /* 00E8 */ 0x79, 0x4A, 0x82, 0x49, 0xE0, 0x51, 0x44, 0x36, /* yJ.I.QD6 */ - /* 00F0 */ 0x1A, 0x27, 0x28, 0x1B, 0x1A, 0x25, 0x03, 0x42, /* .'(..%.B */ - /* 00F8 */ 0x9E, 0x05, 0x58, 0x07, 0x26, 0x04, 0x76, 0x2F, /* ..X.&.v/ */ - /* 0100 */ 0xC0, 0x9A, 0x00, 0x73, 0xB3, 0x90, 0xB1, 0xB9, /* ...s.... */ - /* 0108 */ 0xE8, 0xFF, 0x0F, 0x71, 0xB0, 0x31, 0xDA, 0x9A, /* ...q.1.. */ - /* 0110 */ 0xAE, 0x90, 0xC2, 0xC4, 0x88, 0x12, 0x2C, 0x5E, /* ......,^ */ - /* 0118 */ 0xC5, 0xC3, 0x10, 0xCA, 0x93, 0x42, 0xA8, 0x48, /* .....B.H */ - /* 0120 */ 0x95, 0xA1, 0x68, 0xB4, 0x51, 0x2A, 0x14, 0xE0, /* ..h.Q*.. */ - /* 0128 */ 0x4C, 0x80, 0x30, 0x5C, 0x1D, 0x03, 0x82, 0x46, /* L.0\...F */ - /* 0130 */ 0x88, 0x15, 0x29, 0x56, 0xFB, 0x83, 0x20, 0xF1, /* ..)V.. . */ - /* 0138 */ 0x2D, 0x40, 0x54, 0x01, 0xA2, 0x48, 0xA3, 0x41, /* -@T..H.A */ - /* 0140 */ 0x9D, 0x03, 0x3C, 0x5C, 0x0F, 0xF5, 0xF0, 0x3D, /* ..<\...= */ - /* 0148 */ 0xF6, 0x93, 0x0C, 0x72, 0x90, 0x67, 0xF1, 0xA8, /* ...r.g.. */ - /* 0150 */ 0x70, 0x9C, 0x06, 0x49, 0xE0, 0x0B, 0x80, 0x4F, /* p..I...O */ - /* 0158 */ 0x08, 0x1E, 0x38, 0xDE, 0x35, 0xA0, 0x66, 0x7C, /* ..8.5.f| */ - /* 0160 */ 0xBC, 0x4C, 0x10, 0x1C, 0x6A, 0x88, 0x1E, 0x68, /* .L..j..h */ - /* 0168 */ 0xB8, 0x13, 0x38, 0x44, 0x06, 0xE8, 0x49, 0x3D, /* ..8D..I= */ - /* 0170 */ 0x52, 0x60, 0x07, 0x77, 0x32, 0xEF, 0x01, 0xAF, /* R`.w2... */ - /* 0178 */ 0x0A, 0xCD, 0x5E, 0x12, 0x08, 0xC1, 0xF1, 0xF8, /* ..^..... */ - /* 0180 */ 0x7E, 0xC0, 0x26, 0x9C, 0xC0, 0xF2, 0x07, 0x81, /* ~.&..... */ - /* 0188 */ 0x1A, 0x99, 0xA1, 0x3D, 0xCA, 0xD3, 0x8A, 0x19, /* ...=.... */ - /* 0190 */ 0xF2, 0x31, 0xC1, 0x04, 0x16, 0x0B, 0x21, 0x05, /* .1....!. */ - /* 0198 */ 0x10, 0x1A, 0x0F, 0xF8, 0x6F, 0x00, 0x8F, 0x17, /* ....o... */ - /* 01A0 */ 0xBE, 0x12, 0xC4, 0xF6, 0x80, 0x12, 0x0C, 0x0B, /* ........ */ - /* 01A8 */ 0x21, 0x23, 0xAB, 0xF0, 0x78, 0xE8, 0x28, 0x7C, /* !#..x.(| */ - /* 01B0 */ 0x95, 0x38, 0x9C, 0xD3, 0x8A, 0x67, 0x82, 0xE1, /* .8...g.. */ - /* 01B8 */ 0x20, 0xF4, 0x05, 0x90, 0x00, 0x51, 0xE7, 0x0C, /* ....Q.. */ - /* 01C0 */ 0xD4, 0x61, 0xC1, 0xE7, 0x04, 0x76, 0x33, 0x38, /* .a...v38 */ - /* 01C8 */ 0x83, 0x47, 0x00, 0x8F, 0xE4, 0x84, 0xFC, 0x2B, /* .G.....+ */ - /* 01D0 */ 0xF1, 0xC0, 0xE0, 0x03, 0xE2, 0xEF, 0x1F, 0xA7, /* ........ */ - /* 01D8 */ 0xEC, 0x11, 0x9C, 0xA9, 0x01, 0x7D, 0x1C, 0xF0, /* .....}.. */ - /* 01E0 */ 0xFF, 0x7F, 0x28, 0x7C, 0x88, 0x1E, 0xDF, 0x29, /* ..(|...) */ - /* 01E8 */ 0x1F, 0xAF, 0x4F, 0x17, 0x96, 0x35, 0x4E, 0xE8, /* ..O..5N. */ - /* 01F0 */ 0x77, 0x08, 0x9F, 0x38, 0x7C, 0x64, 0x71, 0x44, /* w..8|dqD */ - /* 01F8 */ 0x08, 0x39, 0x39, 0x05, 0xA0, 0x81, 0x4F, 0xF7, /* .99...O. */ - /* 0200 */ 0xEC, 0x22, 0x9C, 0xAE, 0x27, 0xE5, 0x40, 0xC3, /* ."..'.@. */ - /* 0208 */ 0xA0, 0xE3, 0x04, 0xC7, 0x79, 0x00, 0x1C, 0xE3, /* ....y... */ - /* 0210 */ 0x84, 0x7F, 0x2E, 0x80, 0x3F, 0x40, 0x7E, 0xCA, /* ....?@~. */ - /* 0218 */ 0x78, 0xC5, 0x48, 0xE0, 0x98, 0x23, 0x44, 0x9F, /* x.H..#D. */ - /* 0220 */ 0x6B, 0x3C, 0x42, 0x2C, 0xFC, 0x53, 0x45, 0xE1, /* k... */ - /* 0250 */ 0x89, 0x46, 0xF3, 0xE2, 0xA7, 0x03, 0x7E, 0xF8, /* .F....~. */ - /* 0258 */ 0x00, 0x0F, 0xA8, 0x87, 0x84, 0x03, 0xC5, 0x4C, /* .......L */ - /* 0260 */ 0x9B, 0x83, 0x3E, 0xBB, 0x1C, 0x3A, 0x76, 0xB8, /* ..>..:v. */ - /* 0268 */ 0xE0, 0x3F, 0x81, 0x80, 0x4B, 0xDE, 0x21, 0x0C, /* .?..K.!. */ - /* 0270 */ 0x14, 0x23, 0xC6, 0x9F, 0x83, 0x7C, 0x0A, 0x03, /* .#...|.. */ - /* 0278 */ 0xFF, 0xFF, 0xFF, 0x14, 0x06, 0xFE, 0xE1, 0xF0, /* ........ */ - /* 0280 */ 0x20, 0x4F, 0x07, 0x9F, 0xB6, 0xA8, 0x74, 0x18, /* O....t. */ - /* 0288 */ 0xD4, 0x81, 0x0B, 0xB0, 0x32, 0x89, 0x08, 0xCF, /* ....2... */ - /* 0290 */ 0x12, 0xB5, 0x41, 0xE8, 0xD4, 0xF0, 0x36, 0xF1, /* ..A...6. */ - /* 0298 */ 0xB6, 0xE5, 0x5B, 0x40, 0x9C, 0xD3, 0xEC, 0xED, /* ..[@.... */ - /* 02A0 */ 0xC0, 0x45, 0x30, 0x22, 0xD4, 0x0C, 0x45, 0x4E, /* .E0"..EN */ - /* 02A8 */ 0x5A, 0x11, 0x63, 0x44, 0x79, 0xDC, 0x32, 0xCA, /* Z.cDy.2. */ - /* 02B0 */ 0xDB, 0xD6, 0x0B, 0x40, 0xBC, 0x13, 0x7B, 0xDE, /* ...@..{. */ - /* 02B8 */ 0x32, 0x46, 0xF0, 0xC8, 0x0F, 0x5C, 0x2C, 0xC6, /* 2F...\,. */ - /* 02C0 */ 0xEA, 0xF5, 0x5F, 0xF3, 0x81, 0x0B, 0x70, 0xF6, /* .._...p. */ - /* 02C8 */ 0xFF, 0x3F, 0x70, 0x01, 0x1C, 0x0A, 0x7A, 0x18, /* .?p...z. */ - /* 02D0 */ 0x42, 0x0F, 0xC3, 0x53, 0x39, 0x97, 0x87, 0xC8, /* B..S9... */ - /* 02D8 */ 0x53, 0x89, 0x18, 0x35, 0x4C, 0xD4, 0x67, 0x28, /* S..5L.g( */ - /* 02E0 */ 0xDF, 0x2D, 0x7C, 0x20, 0x02, 0xDF, 0x99, 0x0B, /* .-| .... */ - /* 02E8 */ 0xF8, 0xFD, 0xFF, 0x0F, 0x44, 0x70, 0x8E, 0x29, /* ....Dp.) */ - /* 02F0 */ 0xB8, 0x33, 0x0D, 0x78, 0x7C, 0xCE, 0x40, 0x20, /* .3.x|.@ */ - /* 02F8 */ 0xA7, 0xE2, 0x43, 0x0D, 0x60, 0x41, 0xF4, 0x13, /* ..C.`A.. */ - /* 0300 */ 0xC2, 0x27, 0x1A, 0x2A, 0x13, 0x06, 0x75, 0xA8, /* .'.*..u. */ - /* 0308 */ 0x01, 0xAC, 0x5C, 0x61, 0x9E, 0x46, 0xCF, 0xF9, /* ..\a.F.. */ - /* 0310 */ 0x59, 0xC6, 0xA7, 0x1A, 0x1F, 0x4A, 0x8D, 0x63, /* Y....J.c */ - /* 0318 */ 0x88, 0x97, 0x99, 0x87, 0x1A, 0x1F, 0x0B, 0x5E, /* .......^ */ - /* 0320 */ 0x49, 0x7D, 0xA8, 0x31, 0x54, 0x9C, 0x87, 0x1A, /* I}.1T... */ - /* 0328 */ 0x0F, 0x37, 0x50, 0xD4, 0x37, 0x9B, 0x67, 0x1B, /* .7P.7.g. */ - /* 0330 */ 0xA3, 0xC7, 0xF7, 0x0D, 0xD5, 0x10, 0x0F, 0x35, /* .......5 */ - /* 0338 */ 0x4C, 0xF2, 0x4A, 0x35, 0x16, 0x1F, 0x6A, 0xC0, /* L.J5..j. */ - /* 0340 */ 0xF1, 0xFF, 0x3F, 0xD4, 0x00, 0xFC, 0xFF, 0xFF, /* ..?..... */ - /* 0348 */ 0x1F, 0x6A, 0x00, 0x47, 0x47, 0x03, 0x38, 0x47, /* .j.GG.8G */ - /* 0350 */ 0x46, 0xDC, 0xD1, 0x00, 0x5C, 0x87, 0x52, 0xE0, /* F...\.R. */ - /* 0358 */ 0x70, 0x34, 0x00, 0x1E, 0x47, 0x21, 0x30, 0x5F, /* p4..G!0_ */ - /* 0360 */ 0x68, 0x7C, 0x14, 0x02, 0x16, 0xFF, 0xFF, 0xA3, /* h|...... */ - /* 0368 */ 0x10, 0xF8, 0x65, 0x9F, 0x83, 0x50, 0x42, 0x8F, /* ..e..PB. */ - /* 0370 */ 0x42, 0x80, 0xA0, 0xDB, 0xCF, 0x53, 0xC4, 0xB3, /* B....S.. */ - /* 0378 */ 0x8F, 0x2F, 0x3F, 0x0F, 0x04, 0x11, 0x5E, 0xF3, /* ./?...^. */ - /* 0380 */ 0x7D, 0x0A, 0xF2, 0x21, 0xDF, 0x47, 0x21, 0x06, /* }..!.G!. */ - /* 0388 */ 0x63, 0x28, 0x5F, 0x83, 0x7C, 0x14, 0x62, 0x50, /* c(_.|.bP */ - /* 0390 */ 0xAF, 0x41, 0xBE, 0xEF, 0x1B, 0xE4, 0xF1, 0x22, /* .A....." */ - /* 0398 */ 0x48, 0xEC, 0x67, 0x02, 0x1F, 0x85, 0x98, 0xE8, /* H.g..... */ - /* 03A0 */ 0xA3, 0x10, 0xA0, 0xF0, 0xFF, 0x7F, 0x14, 0x02, /* ........ */ - /* 03A8 */ 0xF8, 0xFF, 0xFF, 0x3F, 0x0A, 0x01, 0xCE, 0x02, /* ...?.... */ - /* 03B0 */ 0x1C, 0x0D, 0x40, 0x37, 0xAD, 0x47, 0x21, 0xF0, /* ..@7.G!. */ - /* 03B8 */ 0xDE, 0x59, 0x4E, 0xFB, 0x04, 0x7C, 0x16, 0x02, /* .YN..|.. */ - /* 03C0 */ 0xCC, 0xFE, 0xFF, 0xCF, 0x42, 0xC0, 0xEC, 0x28, /* ....B..( */ - /* 03C8 */ 0x74, 0x14, 0x67, 0xF9, 0x2A, 0xF4, 0x04, 0xF0, /* t.g.*... */ - /* 03D0 */ 0x02, 0x10, 0x23, 0xCC, 0x3B, 0xD0, 0x4B, 0x26, /* ..#.;.K& */ - /* 03D8 */ 0xBB, 0x8B, 0x1B, 0xE7, 0xC9, 0xE5, 0x2C, 0x9E, /* ......,. */ - /* 03E0 */ 0xC4, 0x7D, 0x09, 0xF2, 0x81, 0xE2, 0x59, 0xC8, /* .}....Y. */ - /* 03E8 */ 0x50, 0xA7, 0x1B, 0xF4, 0x8D, 0xDC, 0x03, 0x8B, /* P....... */ - /* 03F0 */ 0x19, 0x3F, 0xC4, 0xF3, 0x90, 0x21, 0x9E, 0x85, /* .?...!.. */ - /* 03F8 */ 0x00, 0x76, 0xFD, 0xFF, 0xCF, 0x42, 0x00, 0xFF, /* .v...B.. */ - /* 0400 */ 0xFF, 0xFF, 0x47, 0x03, 0xF8, 0x2F, 0x00, 0x9F, /* ..G../.. */ - /* 0408 */ 0x85, 0x80, 0xE7, 0x09, 0xE0, 0x41, 0xDB, 0x67, /* .....A.g */ - /* 0410 */ 0x21, 0x80, 0x33, 0x87, 0xCB, 0xF3, 0x7F, 0x05, /* !.3..... */ - /* 0418 */ 0x3A, 0x96, 0xF7, 0x08, 0xCF, 0xFA, 0x24, 0x5F, /* :.....$_ */ - /* 0420 */ 0x2F, 0x3D, 0xD3, 0x87, 0x82, 0x67, 0x21, 0x86, /* /=...g!. */ - /* 0428 */ 0x75, 0x18, 0x3E, 0x0B, 0x31, 0x88, 0x17, 0x4D, /* u.>.1..M */ - /* 0430 */ 0x43, 0xBC, 0x70, 0xFA, 0x30, 0xE0, 0xFF, 0x3F, /* C.p.0..? */ - /* 0438 */ 0x5E, 0xE0, 0x57, 0x4E, 0x03, 0x05, 0x09, 0xF4, /* ^.WN.... */ - /* 0440 */ 0x2C, 0x04, 0x30, 0xFE, 0xFF, 0x7F, 0x16, 0x02, /* ,.0..... */ - /* 0448 */ 0xC8, 0xB8, 0x46, 0x9D, 0x85, 0x80, 0xE5, 0x6D, /* ..F....m */ - /* 0450 */ 0xE5, 0x19, 0xDB, 0xA7, 0x95, 0x04, 0xFF, 0xFF, /* ........ */ - /* 0458 */ 0x67, 0x21, 0xC0, 0x41, 0x2E, 0x23, 0x07, 0x21, /* g!.A.#.! */ - /* 0460 */ 0x4C, 0xC4, 0x87, 0x83, 0x8F, 0x99, 0x80, 0x9E, /* L....... */ - /* 0468 */ 0x29, 0xBE, 0xB8, 0x1B, 0xE3, 0x09, 0xE0, 0x45, /* )......E */ - /* 0470 */ 0xE2, 0x31, 0x93, 0x1D, 0x35, 0x0D, 0xF3, 0x2C, /* .1..5.., */ - /* 0478 */ 0x64, 0xBC, 0xB3, 0x78, 0x0D, 0x78, 0x82, 0xF7, /* d..x.x.. */ - /* 0480 */ 0xE4, 0x9F, 0x85, 0x18, 0xD8, 0x61, 0x05, 0x7B, /* .....a.{ */ - /* 0488 */ 0x14, 0x32, 0xA8, 0xC1, 0x63, 0x87, 0x08, 0x13, /* .2..c... */ - /* 0490 */ 0xE8, 0x59, 0x88, 0xC5, 0x7D, 0xAE, 0xE8, 0x3C, /* .Y..}..< */ - /* 0498 */ 0xE1, 0xB3, 0x10, 0xF0, 0xFE, 0xFF, 0x9F, 0x25, /* .......% */ - /* 04A0 */ 0xE0, 0x5E, 0x0D, 0x9E, 0x85, 0x00, 0x13, 0x87, /* .^...... */ - /* 04A8 */ 0x0D, 0x9F, 0x35, 0xC0, 0x33, 0x7C, 0x8F, 0xEA, /* ..5.3|.. */ - /* 04B0 */ 0x1C, 0x1E, 0x8F, 0x81, 0x7F, 0x56, 0x1D, 0xE7, /* .....V.. */ - /* 04B8 */ 0x04, 0x96, 0x7B, 0xD1, 0xB2, 0x71, 0xA0, 0xA1, /* ..{..q.. */ - /* 04C0 */ 0x23, 0xB2, 0x3A, 0x20, 0x8D, 0x0D, 0x73, 0x29, /* #.: ..s) */ - /* 04C8 */ 0x89, 0x7C, 0x72, 0x6C, 0xD4, 0x56, 0x04, 0xA7, /* .|rl.V.. */ - /* 04D0 */ 0x33, 0x93, 0x4F, 0x00, 0xD6, 0x42, 0x21, 0x05, /* 3.O..B!. */ - /* 04D8 */ 0x34, 0x1A, 0x8B, 0xE1, 0x9D, 0xF9, 0xE8, 0x44, /* 4......D */ - /* 04E0 */ 0x41, 0x0C, 0xE8, 0xE3, 0x90, 0x6D, 0x1C, 0x0A, /* A....m.. */ - /* 04E8 */ 0x50, 0x7B, 0xD1, 0x14, 0xC8, 0x39, 0x07, 0xA3, /* P{...9.. */ - /* 04F0 */ 0x7F, 0x76, 0x74, 0x36, 0xBE, 0x13, 0x70, 0x0D, /* .vt6..p. */ - /* 04F8 */ 0x10, 0x3A, 0x25, 0x18, 0xDA, 0x6A, 0x04, 0xFC, /* .:%..j.. */ - /* 0500 */ 0xFF, 0x67, 0x89, 0x01, 0x33, 0xFE, 0x53, 0x8C, /* .g..3.S. */ - /* 0508 */ 0x09, 0x7C, 0x8E, 0xC1, 0x1F, 0x0C, 0xF0, 0x03, /* .|...... */ - /* 0510 */ 0x7F, 0x31, 0xA8, 0xFA, 0x5E, 0xA0, 0xFB, 0x82, /* .1..^... */ - /* 0518 */ 0xD5, 0xDD, 0x64, 0x20, 0xCC, 0xC8, 0x04, 0xF5, /* ..d .... */ - /* 0520 */ 0x9D, 0x0E, 0x40, 0x01, 0xE4, 0x0B, 0x81, 0xCF, /* ..@..... */ - /* 0528 */ 0x51, 0x0F, 0x05, 0x6C, 0x22, 0x21, 0xC2, 0x44, /* Q..l"!.D */ - /* 0530 */ 0x33, 0x3A, 0x62, 0xC2, 0xA8, 0xE8, 0x13, 0xA6, /* 3:b..... */ - /* 0538 */ 0x20, 0x9E, 0xB0, 0x63, 0x4D, 0x18, 0x3D, 0x13, /* ..cM.=. */ - /* 0540 */ 0x5F, 0x74, 0xD8, 0x88, 0x31, 0x21, 0xAE, 0x1E, /* _t..1!.. */ - /* 0548 */ 0xD0, 0x26, 0x18, 0xD4, 0x97, 0x22, 0x58, 0x43, /* .&..."XC */ - /* 0550 */ 0xE6, 0x63, 0xF1, 0x05, 0x02, 0x37, 0x65, 0x30, /* .c...7e0 */ - /* 0558 */ 0xCE, 0x89, 0x5D, 0x13, 0x7C, 0xD9, 0xC1, 0xCD, /* ..].|... */ - /* 0560 */ 0x19, 0x8C, 0xF0, 0x98, 0xBB, 0x18, 0xBF, 0x3A, /* .......: */ - /* 0568 */ 0x79, 0x74, 0xFC, 0xA0, 0xE0, 0x1B, 0x0E, 0xC3, /* yt...... */ - /* 0570 */ 0x7E, 0x32, 0xF3, 0x8C, 0xDE, 0xCB, 0x7C, 0x8D, /* ~2....|. */ - /* 0578 */ 0xC3, 0xC0, 0x7A, 0xBC, 0x1C, 0xD6, 0x68, 0x61, /* ..z...ha */ - /* 0580 */ 0x0F, 0xED, 0x3D, 0xC4, 0xFF, 0xFF, 0x43, 0x8C, /* ..=...C. */ - /* 0588 */ 0xCF, 0x13, 0xC6, 0x08, 0xEB, 0xDB, 0x0B, 0x38, /* .......8 */ - /* 0590 */ 0xEE, 0x59, 0xF0, 0xEF, 0x1A, 0xE0, 0xB9, 0x84, /* .Y...... */ - /* 0598 */ 0xF8, 0xAE, 0x01, 0x30, 0xF0, 0xFF, 0x7F, 0xD7, /* ...0.... */ - /* 05A0 */ 0x00, 0x4E, 0xD7, 0x04, 0xDF, 0x35, 0x80, 0xF7, /* .N...5.. */ - /* 05A8 */ 0xD0, 0x7D, 0xD7, 0x00, 0xAE, 0xD9, 0xEF, 0x1A, /* .}...... */ - /* 05B0 */ 0xA8, 0x63, 0x80, 0x15, 0xDE, 0x35, 0xA0, 0x5D, /* .c...5.] */ - /* 05B8 */ 0xD9, 0xDE, 0xD7, 0x9E, 0xB0, 0xAC, 0xE9, 0xB2, /* ........ */ - /* 05C0 */ 0x81, 0x52, 0x73, 0xD9, 0x00, 0x14, 0xFC, 0xFF, /* .Rs..... */ - /* 05C8 */ 0x2F, 0x1B, 0x80, 0x01, 0x29, 0x13, 0x46, 0x85, /* /...).F. */ - /* 05D0 */ 0x9F, 0x30, 0x05, 0xF1, 0x84, 0x1D, 0xEC, 0xB2, /* .0...... */ - /* 05D8 */ 0x01, 0x8A, 0x18, 0x97, 0x0D, 0xD0, 0x8F, 0xED, /* ........ */ - /* 05E0 */ 0x65, 0x03, 0x18, 0xDC, 0x13, 0xF8, 0x6D, 0x03, /* e.....m. */ - /* 05E8 */ 0x78, 0x43, 0xFA, 0xB6, 0x01, 0xD6, 0xFF, 0xFF, /* xC...... */ - /* 05F0 */ 0x6D, 0x03, 0xAC, 0xF9, 0x6F, 0x1B, 0x28, 0x0E, /* m...o.(. */ - /* 05F8 */ 0xAB, 0xBC, 0x6D, 0x40, 0x3C, 0xC9, 0x33, 0x02, /* ..m@<.3. */ - /* 0600 */ 0xAB, 0xBA, 0x6E, 0xA0, 0xF4, 0x5C, 0x37, 0x00, /* ..n..\7. */ - /* 0608 */ 0x12, 0x88, 0x99, 0x30, 0x2A, 0xFE, 0x84, 0x29, /* ...0*..) */ - /* 0610 */ 0x88, 0x27, 0xEC, 0x68, 0xD7, 0x0D, 0x50, 0x04, /* .'.h..P. */ - /* 0618 */ 0xB9, 0x6E, 0x80, 0x7E, 0x5E, 0x09, 0xFE, 0xFF, /* .n.~^... */ - /* 0620 */ 0xAF, 0x1B, 0xC0, 0xE0, 0xA2, 0x80, 0xB9, 0x6F, /* .......o */ - /* 0628 */ 0x00, 0x6F, 0x58, 0x7E, 0xDF, 0x00, 0x7C, 0xDC, /* .oX~..|. */ - /* 0630 */ 0xC4, 0x31, 0xF7, 0x0D, 0xC0, 0xCC, 0xFF, 0xFF, /* .1...... */ - /* 0638 */ 0xBE, 0x01, 0xB0, 0xE7, 0xA2, 0x80, 0xBB, 0x6F, /* .......o */ - /* 0640 */ 0x00, 0xEF, 0x8B, 0xB4, 0xEF, 0x1B, 0x60, 0xFE, /* ......`. */ - /* 0648 */ 0xFF, 0xDF, 0x37, 0xC0, 0x28, 0x6D, 0xFD, 0x1E, /* ..7.(m.. */ - /* 0650 */ 0x1C, 0x3D, 0x21, 0x78, 0x7C, 0xB8, 0xFB, 0xA5, /* .=!x|... */ - /* 0658 */ 0xC7, 0xE7, 0xBB, 0x39, 0x38, 0x06, 0x79, 0x8C, /* ...98.y. */ - /* 0660 */ 0x87, 0x76, 0xC0, 0xAF, 0xEF, 0x9E, 0x98, 0xEF, /* .v...... */ - /* 0668 */ 0xE6, 0xC0, 0xFF, 0x4C, 0x70, 0x3C, 0x18, 0x68, /* ...Lp<.h */ - /* 0670 */ 0x1C, 0x62, 0xAB, 0x97, 0x06, 0x72, 0x34, 0x38, /* .b...r48 */ - /* 0678 */ 0x3F, 0xDC, 0x19, 0x81, 0x61, 0x15, 0x7F, 0xF2, /* ?...a... */ - /* 0680 */ 0x47, 0x38, 0xC7, 0xD0, 0xD9, 0xE1, 0x20, 0xB1, /* G8.... . */ - /* 0688 */ 0x83, 0xE0, 0xC1, 0x56, 0x6D, 0x02, 0x85, 0x86, /* ...Vm... */ - /* 0690 */ 0x50, 0x14, 0x18, 0x14, 0x8B, 0x0F, 0x18, 0xF8, /* P....... */ - /* 0698 */ 0x61, 0xB3, 0xB3, 0x00, 0x93, 0x04, 0x87, 0x3A, /* a......: */ - /* 06A0 */ 0x02, 0xF8, 0x3E, 0xD1, 0xFC, 0x38, 0x74, 0x37, /* ..>..8t7 */ - /* 06A8 */ 0x38, 0x54, 0x8F, 0xE5, 0xA1, 0x80, 0x9E, 0x01, /* 8T...... */ - /* 06B0 */ 0x71, 0xC7, 0x0C, 0x32, 0x69, 0xCF, 0x28, 0xE2, /* q..2i.(. */ - /* 06B8 */ 0x53, 0xC2, 0x29, 0x85, 0x49, 0xE0, 0xF3, 0x03, /* S.).I... */ - /* 06C0 */ 0x43, 0xE3, 0x04, 0xAF, 0x0D, 0xA1, 0xF9, 0xFF, /* C....... */ - /* 06C8 */ 0xFF, 0xA4, 0xC0, 0x3C, 0xDF, 0x31, 0x04, 0x6C, /* ...<.1.l */ - /* 06D0 */ 0x02, 0xBB, 0xBF, 0x64, 0xC8, 0xDA, 0xC0, 0x75, /* ...d...u */ - /* 06D8 */ 0x4B, 0x32, 0x44, 0x6F, 0x38, 0xB2, 0x85, 0xA2, /* K2Do8... */ - /* 06E0 */ 0xE9, 0x44, 0x79, 0xDF, 0x88, 0x62, 0x67, 0x08, /* .Dy..bg. */ - /* 06E8 */ 0xC2, 0x88, 0x12, 0x2C, 0xC8, 0xA3, 0x42, 0xAC, /* ...,..B. */ - /* 06F0 */ 0x28, 0x2F, 0x05, 0x46, 0x88, 0x18, 0xE2, 0x95, /* (/.F.... */ - /* 06F8 */ 0x23, 0xD0, 0x09, 0x87, 0x0F, 0xF2, 0xD8, 0x14, /* #....... */ - /* 0700 */ 0xA7, 0xFD, 0x41, 0x90, 0x58, 0x4F, 0x02, 0x8D, /* ..A.XO.. */ - /* 0708 */ 0xC5, 0x91, 0x46, 0x83, 0x3A, 0x07, 0x78, 0xB8, /* ..F.:.x. */ - /* 0710 */ 0x3E, 0xC4, 0x78, 0xF8, 0x0F, 0x21, 0x06, 0x39, /* >.x..!.9 */ - /* 0718 */ 0xC8, 0x73, 0x7B, 0x54, 0x38, 0x4E, 0x5F, 0x25, /* .s{T8N_% */ - /* 0720 */ 0x4C, 0xF0, 0x02, 0xE0, 0x83, 0x0A, 0x1C, 0xD7, /* L....... */ - /* 0728 */ 0x80, 0x9A, 0xF1, 0x33, 0x06, 0x58, 0x8E, 0xE3, /* ...3.X.. */ - /* 0730 */ 0x3E, 0xA9, 0xC0, 0x1D, 0x8F, 0xEF, 0x07, 0x6C, /* >......l */ - /* 0738 */ 0xC2, 0x09, 0x2C, 0x7F, 0x10, 0xA8, 0xE3, 0x0C, /* ..,..... */ - /* 0740 */ 0x9F, 0xE7, 0x0B, 0x8B, 0x21, 0x1F, 0x13, 0x4C, /* ....!..L */ - /* 0748 */ 0x60, 0xB1, 0x27, 0x1B, 0x3A, 0x1E, 0xF0, 0xDF, /* `.'.:... */ - /* 0750 */ 0x63, 0x1E, 0x2F, 0x7C, 0x32, 0xF1, 0x7C, 0x4D, /* c./|2.|M */ - /* 0758 */ 0x30, 0x22, 0x84, 0x9C, 0x8C, 0x07, 0x7D, 0x87, /* 0"....}. */ - /* 0760 */ 0xC0, 0x5C, 0x6F, 0xD8, 0xB9, 0x85, 0x8B, 0x3A, /* .\o....: */ - /* 0768 */ 0x68, 0xA0, 0x4E, 0x0B, 0x3E, 0x28, 0xB0, 0x9B, /* h.N.>(.. */ - /* 0770 */ 0x11, 0xE6, 0xB8, 0xCE, 0xCF, 0x2A, 0x60, 0xF8, /* .....*`. */ - /* 0778 */ 0xFF, 0x9F, 0x55, 0x60, 0x8F, 0x10, 0xFE, 0xED, /* ..U`.... */ - /* 0780 */ 0xC1, 0xF3, 0xF2, 0x95, 0xE1, 0xD5, 0x21, 0x81, /* ......!. */ - /* 0788 */ 0x43, 0x8E, 0x10, 0x3D, 0x2E, 0x8F, 0x10, 0x73, /* C..=...s */ - /* 0790 */ 0x3E, 0xC2, 0x0C, 0x11, 0x5C, 0x67, 0x01, 0x70, /* >...\g.p */ - /* 0798 */ 0x0C, 0x11, 0xF8, 0x1C, 0x70, 0xC0, 0x71, 0x69, /* ....p.qi */ - /* 07A0 */ 0xE2, 0x03, 0xF5, 0x01, 0x07, 0x70, 0x70, 0x4D, /* .....ppM */ - /* 07A8 */ 0xC3, 0x1D, 0x70, 0xC0, 0x71, 0x16, 0x60, 0xFF, /* ..p.q.`. */ - /* 07B0 */ 0xFF, 0xC3, 0x0D, 0x2C, 0x49, 0x26, 0x0E, 0x23, /* ...,I&.# */ - /* 07B8 */ 0x18, 0x11, 0x30, 0x28, 0x02, 0x02, 0xA4, 0xB3, /* ..0(.... */ - /* 07C0 */ 0x80, 0x0F, 0x29, 0x00, 0x1F, 0xAE, 0x0C, 0x0F, /* ..)..... */ - /* 07C8 */ 0x29, 0xD8, 0x93, 0x86, 0x07, 0x8E, 0x1B, 0x85, /* )....... */ - /* 07D0 */ 0x07, 0x8D, 0x0B, 0x30, 0x68, 0x7A, 0xE2, 0x80, /* ...0hz.. */ - /* 07D8 */ 0x7F, 0x4C, 0xF0, 0x19, 0x05, 0x1C, 0xE3, 0x06, /* .L...... */ - /* 07E0 */ 0xDF, 0x2A, 0x0C, 0xFC, 0xFF, 0x3F, 0x30, 0xCC, /* .*...?0. */ - /* 07E8 */ 0xE1, 0xC2, 0x63, 0x39, 0x8A, 0xA0, 0x07, 0x1E, /* ..c9.... */ - /* 07F0 */ 0xD4, 0xF7, 0x8C, 0x33, 0xF7, 0x24, 0x8F, 0xD1, /* ...3.$.. */ - /* 07F8 */ 0x51, 0x0F, 0x27, 0xF4, 0xE4, 0x85, 0x3B, 0x57, /* Q.'...;W */ - /* 0800 */ 0xF9, 0x0A, 0x71, 0x14, 0x18, 0xB8, 0x77, 0x29, /* ..q...w) */ - /* 0808 */ 0x8F, 0xCF, 0x17, 0x2B, 0xC3, 0x63, 0x46, 0xFB, /* ...+.cF. */ - /* 0810 */ 0x1E, 0x72, 0xD6, 0x11, 0x02, 0xE2, 0x2F, 0x75, /* .r..../u */ - /* 0818 */ 0x6C, 0xC0, 0x60, 0x39, 0x18, 0x00, 0x87, 0x01, /* l.`9.... */ - /* 0820 */ 0xE3, 0x13, 0x0D, 0x58, 0x67, 0x1B, 0x3C, 0xF4, /* ...Xg.<. */ - /* 0828 */ 0x69, 0x31, 0xC4, 0xE3, 0x0B, 0xFB, 0x56, 0x61, /* i1....Va */ - /* 0830 */ 0x82, 0xEA, 0x41, 0x75, 0x12, 0xF4, 0xD0, 0xC0, /* ..Au.... */ - /* 0838 */ 0x01, 0xE8, 0xA1, 0xC1, 0x3F, 0xB9, 0x90, 0xFB, /* ....?... */ - /* 0840 */ 0x2B, 0x1D, 0x82, 0xB5, 0xE2, 0x69, 0xDE, 0x47, /* +....i.G */ - /* 0848 */ 0x1E, 0xF3, 0xDC, 0xA2, 0xBC, 0x0D, 0x3C, 0x07, /* ......<. */ - /* 0850 */ 0xF0, 0xD3, 0x82, 0x87, 0xE3, 0x63, 0x81, 0xC7, /* .....c.. */ - /* 0858 */ 0xE9, 0x4B, 0x58, 0x82, 0xF7, 0x1A, 0x9F, 0x6C, /* .KX....l */ - /* 0860 */ 0x1E, 0x5C, 0x58, 0xB2, 0x21, 0xA0, 0x06, 0xEB, /* .\X.!... */ - /* 0868 */ 0x21, 0x60, 0xA6, 0x9A, 0xC0, 0x49, 0x46, 0x80, /* !`...IF. */ - /* 0870 */ 0xCA, 0x00, 0xA1, 0x1B, 0xCB, 0xE9, 0x3E, 0x8B, /* ......>. */ - /* 0878 */ 0x84, 0x38, 0xCD, 0x47, 0x99, 0xC7, 0x02, 0x8F, /* .8.G.... */ - /* 0880 */ 0xF5, 0xC1, 0xC0, 0xFF, 0x7F, 0xCD, 0x23, 0xD4, /* ......#. */ - /* 0888 */ 0x7D, 0xCD, 0x33, 0x7B, 0x3A, 0xC0, 0xAC, 0x22, /* }.3{:.." */ - /* 0890 */ 0xDC, 0x7B, 0xCE, 0x1B, 0x86, 0xD1, 0x9E, 0x2D, /* .{.....- */ - /* 0898 */ 0x7C, 0xCD, 0x78, 0xD6, 0x34, 0x42, 0x38, 0x76, /* |.x.4B8v */ - /* 08A0 */ 0x83, 0xF3, 0x48, 0x8C, 0xF0, 0x82, 0xC0, 0x4E, /* ..H....N */ - /* 08A8 */ 0x0C, 0x0F, 0x30, 0xC6, 0x39, 0x79, 0xC3, 0xFA, /* ..0.9y.. */ - /* 08B0 */ 0xC2, 0xCB, 0x40, 0x83, 0x19, 0xDB, 0x97, 0x01, /* ..@..... */ - /* 08B8 */ 0x36, 0x2A, 0xDF, 0x88, 0xC0, 0x97, 0xFC, 0x62, /* 6*.....b */ - /* 08C0 */ 0x00, 0x65, 0x16, 0xBE, 0x9E, 0xF8, 0xA0, 0xC4, /* .e...... */ - /* 08C8 */ 0x2E, 0x06, 0x2C, 0xE5, 0xC5, 0x00, 0x54, 0x37, /* ..,...T7 */ - /* 08D0 */ 0x0C, 0x5F, 0x0C, 0xE0, 0x5F, 0x89, 0x5E, 0x0C, /* ._.._.^. */ - /* 08D8 */ 0xC0, 0x70, 0x71, 0xF2, 0x3D, 0xC0, 0x1E, 0xEE, /* .pq.=... */ - /* 08E0 */ 0xA3, 0x74, 0x9C, 0xBE, 0xFD, 0xBD, 0x19, 0xF8, /* .t...... */ - /* 08E8 */ 0x6C, 0xC0, 0x60, 0x3C, 0xC3, 0x30, 0xC6, 0x08, /* l.`<.0.. */ - /* 08F0 */ 0xE3, 0x51, 0x86, 0x31, 0xC1, 0xDC, 0xB7, 0x03, /* .Q.1.... */ - /* 08F8 */ 0xE8, 0x39, 0x87, 0x81, 0x4A, 0x78, 0x3B, 0x80, /* .9..Jx;. */ - /* 0900 */ 0x72, 0x0E, 0xE8, 0xF2, 0x68, 0x42, 0x4F, 0x01, /* r...hBO. */ - /* 0908 */ 0x4F, 0x07, 0x3E, 0x29, 0x1A, 0xA2, 0xAF, 0xB1, /* O.>).... */ - /* 0910 */ 0x0A, 0x26, 0x50, 0xC4, 0x07, 0x0D, 0x3E, 0xB5, /* .&P...>. */ - /* 0918 */ 0x28, 0x3E, 0x15, 0x78, 0x2D, 0xCF, 0x4E, 0xE1, /* (>.x-.N. */ - /* 0920 */ 0xE2, 0x9C, 0x89, 0xA7, 0x6A, 0x38, 0x03, 0xBD, /* ....j8.. */ - /* 0928 */ 0xE6, 0x86, 0x63, 0xFF, 0x7F, 0x38, 0xFC, 0xA9, /* ..c..8.. */ - /* 0930 */ 0xE0, 0x35, 0x80, 0x1D, 0x24, 0x3D, 0x2D, 0x23, /* .5..$=-# */ - /* 0938 */ 0xC2, 0x38, 0xA4, 0x3C, 0x32, 0xF8, 0xB6, 0x18, /* .8.<2... */ - /* 0940 */ 0xC7, 0x90, 0x0F, 0x91, 0xBE, 0x13, 0x18, 0xF2, /* ........ */ - /* 0948 */ 0x21, 0xEF, 0x79, 0xC7, 0xC0, 0xAF, 0x08, 0x71, /* !.y....q */ - /* 0950 */ 0x9E, 0xB2, 0x7C, 0x67, 0xF0, 0x65, 0x01, 0x7C, /* ..|g.e.| */ - /* 0958 */ 0x91, 0x2E, 0x0B, 0x68, 0x68, 0x9F, 0x64, 0x7C, /* ...hh.d| */ - /* 0960 */ 0x41, 0x30, 0xEC, 0x89, 0xB3, 0x00, 0x77, 0x05, /* A0....w. */ - /* 0968 */ 0x50, 0x81, 0xFA, 0xAE, 0x00, 0xFF, 0x42, 0xF0, /* P.....B. */ - /* 0970 */ 0xAE, 0x00, 0x86, 0x79, 0xF9, 0x56, 0xC0, 0x35, /* ...y.V.5 */ - /* 0978 */ 0x1D, 0x4A, 0xD0, 0x67, 0x12, 0x5F, 0x17, 0x70, /* .J.g._.p */ - /* 0980 */ 0x53, 0x64, 0xA9, 0x8E, 0x0A, 0xD0, 0x53, 0x4C, /* Sd....SL */ - /* 0988 */ 0x02, 0x75, 0x47, 0xF7, 0x51, 0x01, 0xC6, 0x4D, /* .uG.Q..M */ - /* 0990 */ 0xD9, 0x07, 0x54, 0x76, 0x5A, 0x60, 0x67, 0x21, /* ..TvZ`g! */ - /* 0998 */ 0x76, 0x1D, 0xC1, 0x5D, 0x49, 0x18, 0xCA, 0xB3, /* v..]I... */ - /* 09A0 */ 0x81, 0x2F, 0x59, 0xFC, 0x70, 0x00, 0x03, 0xDC, /* ./Y.p... */ - /* 09A8 */ 0xB3, 0x38, 0xC4, 0x08, 0xB1, 0xD9, 0x81, 0xEB, /* .8...... */ - /* 09B0 */ 0x75, 0xD2, 0x70, 0x2F, 0x44, 0xEC, 0xFF, 0x7F, /* u.p/D... */ - /* 09B8 */ 0x32, 0x00, 0xE3, 0x51, 0x1B, 0x1C, 0x27, 0x9D, /* 2..Q..'. */ - /* 09C0 */ 0xF0, 0x91, 0x9E, 0x59, 0xF8, 0x49, 0x19, 0x30, /* ...Y.I.0 */ - /* 09C8 */ 0x71, 0xF2, 0x03, 0xE3, 0xC9, 0x1A, 0xC6, 0x00, /* q....... */ - /* 09D0 */ 0xB8, 0xBC, 0x57, 0x95, 0x81, 0xFC, 0x43, 0x90, /* ..W...C. */ - /* 09D8 */ 0x20, 0x18, 0xD4, 0x29, 0x19, 0x38, 0x1C, 0xC5, /* ..).8.. */ - /* 09E0 */ 0x70, 0xA7, 0x64, 0x78, 0x50, 0xF8, 0xC3, 0x00, /* p.dxP... */ - /* 09E8 */ 0xE6, 0x46, 0xE8, 0x7B, 0x82, 0xA1, 0xDE, 0x93, /* .F.{.... */ - /* 09F0 */ 0x0E, 0xE3, 0x91, 0xD0, 0x04, 0x3E, 0x2D, 0xC3, /* .....>-. */ - /* 09F8 */ 0xFA, 0xFF, 0x9F, 0x96, 0x81, 0xD5, 0xB1, 0xDD, /* ........ */ - /* 0A00 */ 0x43, 0xF6, 0x59, 0x01, 0x77, 0x76, 0x80, 0x3B, /* C.Y.wv.; */ - /* 0A08 */ 0x3D, 0x7E, 0x7A, 0x00, 0x9C, 0x00, 0x3D, 0x3D, /* =~z...== */ - /* 0A10 */ 0x80, 0xED, 0xBC, 0x01, 0xF7, 0x40, 0x80, 0x38, /* .....@.8 */ - /* 0A18 */ 0xFE, 0xA3, 0x82, 0x5F, 0x59, 0x28, 0x1C, 0x3F, /* ..._Y(.? */ - /* 0A20 */ 0xB6, 0xF3, 0x63, 0x09, 0xEE, 0x70, 0xE0, 0x23, /* ..c..p.# */ - /* 0A28 */ 0x83, 0x0F, 0x90, 0xB8, 0xA1, 0xF8, 0x50, 0x81, /* ......P. */ - /* 0A30 */ 0x3C, 0x0B, 0x80, 0x62, 0xF4, 0x6C, 0x04, 0xEC, /* <..b.l.. */ - /* 0A38 */ 0x06, 0xF3, 0xD2, 0x12, 0xE5, 0xFF, 0xFF, 0xDE, /* ........ */ - /* 0A40 */ 0xC0, 0x4E, 0x29, 0xB8, 0x83, 0x00, 0xF8, 0x8E, /* .N)..... */ - /* 0A48 */ 0x01, 0xE0, 0x1D, 0x0C, 0x97, 0x35, 0x66, 0x94, /* .....5f. */ - /* 0A50 */ 0x10, 0x18, 0x8D, 0x19, 0x77, 0x08, 0xE1, 0x27, /* ....w..' */ - /* 0A58 */ 0x02, 0xDC, 0x98, 0x3D, 0x6E, 0x8F, 0x19, 0x77, /* ...=n..w */ - /* 0A60 */ 0x9C, 0xE5, 0xA3, 0x7A, 0xCA, 0x08, 0xE5, 0x03, /* ...z.... */ - /* 0A68 */ 0x07, 0x3B, 0x67, 0xBC, 0x11, 0xF0, 0xA1, 0x03, /* .;g..... */ - /* 0A70 */ 0x8F, 0x03, 0x0C, 0xEE, 0x48, 0x01, 0xC6, 0xCB, /* ....H... */ - /* 0A78 */ 0x01, 0x1B, 0x3B, 0xB8, 0x83, 0x90, 0x53, 0x20, /* ..;...S */ - /* 0A80 */ 0x4B, 0x87, 0xD1, 0xD8, 0x71, 0xB2, 0x81, 0x74, /* K...q..t */ - /* 0A88 */ 0x8C, 0xF1, 0x21, 0xD7, 0x63, 0xC7, 0x0D, 0xD6, /* ..!.c... */ - /* 0A90 */ 0x63, 0xC7, 0x1D, 0x5F, 0xB0, 0xFF, 0xFF, 0xE3, /* c.._.... */ - /* 0A98 */ 0x0B, 0x18, 0xC6, 0xC0, 0xC5, 0x0F, 0x03, 0x7D, /* .......} */ - /* 0AA0 */ 0xF3, 0xF3, 0xE8, 0x0C, 0xEE, 0x61, 0xFB, 0x04, /* .....a.. */ - /* 0AA8 */ 0x13, 0xE3, 0xF9, 0x25, 0xC4, 0x23, 0xCC, 0x8B, /* ...%.#.. */ - /* 0AB0 */ 0x4B, 0x84, 0xA3, 0x08, 0xF2, 0xE6, 0x12, 0xE7, /* K....... */ - /* 0AB8 */ 0xD5, 0x20, 0xCC, 0x63, 0x4B, 0x94, 0x10, 0x11, /* . .cK... */ - /* 0AC0 */ 0x0E, 0x26, 0xCE, 0x13, 0x8C, 0x11, 0x0E, 0x3C, /* .&.....< */ - /* 0AC8 */ 0x8A, 0x21, 0x22, 0x9C, 0x40, 0x88, 0x93, 0x3E, /* .!".@..> */ - /* 0AD0 */ 0xD9, 0x20, 0xE1, 0x63, 0x84, 0x8D, 0xF6, 0x04, /* . .c.... */ - /* 0AD8 */ 0xC3, 0xC7, 0xC2, 0xCF, 0x2B, 0x1E, 0x3C, 0x3F, /* ....+... */ - /* 0B38 */ 0x41, 0xC0, 0x87, 0x3A, 0x54, 0x0F, 0xF3, 0xA8, /* A..:T... */ - /* 0B40 */ 0x5E, 0x0A, 0x19, 0xCE, 0xD9, 0xC1, 0x1D, 0x04, /* ^....... */ - /* 0B48 */ 0xF6, 0xF8, 0xE1, 0x41, 0xF0, 0x9B, 0x25, 0x1F, /* ...A..%. */ - /* 0B50 */ 0x04, 0x3B, 0xDF, 0xBC, 0xC1, 0x19, 0xE4, 0xFF, /* .;...... */ - /* 0B58 */ 0x7F, 0x0C, 0xB0, 0xCF, 0x54, 0x3E, 0x9A, 0x20, /* ....T>. */ - /* 0B60 */ 0x8E, 0x80, 0xE8, 0xF3, 0x87, 0xC7, 0xF0, 0x26, /* .......& */ - /* 0B68 */ 0xC7, 0x87, 0x83, 0x3D, 0x7A, 0xE0, 0x4E, 0x22, /* ...=z.N" */ - /* 0B70 */ 0x70, 0x8F, 0x5D, 0x07, 0xED, 0x6B, 0x9C, 0x2F, /* p.]..k./ */ - /* 0B78 */ 0x5A, 0x30, 0xEE, 0x7B, 0xCF, 0x22, 0xE0, 0xC7, /* Z0.{.".. */ - /* 0B80 */ 0x78, 0x6C, 0x01, 0xC7, 0xA1, 0x04, 0xDC, 0xC1, /* xl...... */ - /* 0B88 */ 0x8E, 0x6B, 0x1C, 0x42, 0x51, 0x60, 0x74, 0x28, /* .k.BQ`t( */ - /* 0B90 */ 0xC1, 0xC5, 0x00, 0x12, 0x8C, 0x63, 0x9C, 0xD1, /* .....c.. */ - /* 0B98 */ 0xD0, 0x97, 0x48, 0x1F, 0xD2, 0xE0, 0x0C, 0x1A, /* ..H..... */ - /* 0BA0 */ 0xF6, 0x3C, 0x9F, 0x50, 0xB8, 0x3D, 0x01, 0x8A, /* .<.P.=.. */ - /* 0BA8 */ 0x4E, 0x28, 0x20, 0xC3, 0x7D, 0x06, 0xC1, 0x9E, /* N( .}... */ - /* 0BB0 */ 0x10, 0xF8, 0x19, 0x84, 0xFD, 0xFF, 0x0F, 0x8E, /* ........ */ - /* 0BB8 */ 0x1E, 0xF7, 0x7B, 0xA3, 0x4F, 0x8D, 0x6C, 0xEE, /* ..{.O.l. */ - /* 0BC0 */ 0x0F, 0x01, 0x27, 0x70, 0xEE, 0xEC, 0xD4, 0x8C, /* ..'p.... */ - /* 0BC8 */ 0x3B, 0x33, 0x60, 0xCF, 0x1F, 0x1E, 0x02, 0x3F, /* ;3`....? */ - /* 0BD0 */ 0x17, 0x78, 0xF8, 0x1E, 0x02, 0x7E, 0xF0, 0x0F, /* .x...~.. */ - /* 0BD8 */ 0xCC, 0x06, 0x07, 0xE3, 0x29, 0xC2, 0xD7, 0x0E, /* ....)... */ - /* 0BE0 */ 0x0E, 0xCE, 0x4F, 0x03, 0x06, 0xE7, 0xAF, 0x50, /* ..O....P */ - /* 0BE8 */ 0x9F, 0xE7, 0x19, 0x38, 0xF6, 0xD4, 0xEB, 0x7B, /* ...8...{ */ - /* 0BF0 */ 0x87, 0xE7, 0xEB, 0x43, 0x05, 0xFE, 0xA6, 0xE7, /* ...C.... */ - /* 0BF8 */ 0x43, 0x05, 0x38, 0x0E, 0x0F, 0xFC, 0xB0, 0xC2, /* C.8..... */ - /* 0C00 */ 0x86, 0xF0, 0x28, 0x80, 0x3F, 0xB5, 0xF8, 0xF8, /* ..(.?... */ - /* 0C08 */ 0x17, 0xE7, 0x29, 0x82, 0xDD, 0x46, 0xB0, 0x87, /* ..)..F.. */ - /* 0C10 */ 0x0B, 0xC0, 0x51, 0xB4, 0xB3, 0x18, 0x2A, 0xCC, /* ..Q...*. */ - /* 0C18 */ 0x59, 0x8C, 0xFC, 0xFF, 0xCF, 0x51, 0xA8, 0xB3, /* Y....Q.. */ - /* 0C20 */ 0x18, 0x3D, 0x5C, 0x00, 0x2E, 0x04, 0x1F, 0x0F, /* .=\..... */ - /* 0C28 */ 0x40, 0x73, 0x10, 0x78, 0x5C, 0xF0, 0x85, 0xE0, /* @s.x\... */ - /* 0C30 */ 0x48, 0x0E, 0xE4, 0xE9, 0x00, 0xF0, 0x19, 0x4A, /* H......J */ - /* 0C38 */ 0xC3, 0xA1, 0x09, 0x13, 0x03, 0x06, 0x75, 0x3E, /* ......u> */ - /* 0C40 */ 0xF0, 0x09, 0xC5, 0xC7, 0x0E, 0x7E, 0x36, 0xF0, /* .....~6. */ - /* 0C48 */ 0x8D, 0xDC, 0x43, 0xE5, 0xA7, 0x66, 0x5F, 0xF2, /* ..C..f_. */ - /* 0C50 */ 0x11, 0xE0, 0x02, 0x75, 0xA0, 0x61, 0xA0, 0x46, /* ...u.a.F */ - /* 0C58 */ 0xE4, 0x23, 0xD2, 0xFF, 0xFF, 0xB9, 0x0D, 0x1B, /* .#...... */ - /* 0C60 */ 0x60, 0x68, 0xF4, 0x1C, 0x0E, 0xE3, 0x80, 0xEB, /* `h...... */ - /* 0C68 */ 0x73, 0x38, 0x76, 0x40, 0x3E, 0x87, 0xC3, 0x3F, /* s8v@>..? */ - /* 0C70 */ 0x47, 0xC3, 0x1F, 0x1B, 0x3B, 0xDD, 0xF3, 0x81, /* G...;... */ - /* 0C78 */ 0xC1, 0xBA, 0x7E, 0x63, 0x06, 0x06, 0xB6, 0x6F, /* ..~c...o */ - /* 0C80 */ 0x91, 0x07, 0x06, 0x1C, 0x51, 0xCF, 0xC6, 0x57, /* ....Q..W */ - /* 0C88 */ 0x08, 0x0F, 0x0C, 0x6C, 0x80, 0x1E, 0x18, 0xF0, /* ...l.... */ - /* 0C90 */ 0x89, 0x05, 0x21, 0x27, 0x03, 0x43, 0x9D, 0x32, /* ..!'.C.2 */ - /* 0C98 */ 0x8C, 0x1C, 0xF3, 0x89, 0xC3, 0xC3, 0xF0, 0xA1, /* ........ */ - /* 0CA0 */ 0x22, 0xEA, 0x33, 0xC0, 0x23, 0x1E, 0x1B, 0x1B, /* ".3.#... */ - /* 0CA8 */ 0xFB, 0xFF, 0x8F, 0x0D, 0x2C, 0xC7, 0x16, 0x8F, /* ....,... */ - /* 0CB0 */ 0x0D, 0xFC, 0x47, 0x78, 0xFC, 0xD8, 0xE0, 0x8C, /* ..Gx.... */ - /* 0CB8 */ 0xE5, 0xD1, 0xC4, 0x97, 0x99, 0x23, 0x3B, 0x8D, /* .....#;. */ - /* 0CC0 */ 0x33, 0x7B, 0x0D, 0xF1, 0xD1, 0xEE, 0xF1, 0xDB, /* 3{...... */ - /* 0CC8 */ 0x63, 0x03, 0x97, 0x85, 0xB1, 0x01, 0xA5, 0x90, /* c....... */ - /* 0CD0 */ 0x63, 0x43, 0x1F, 0x52, 0x7C, 0x0A, 0xB0, 0x71, /* cC.R|..q */ - /* 0CD8 */ 0x54, 0x32, 0x0F, 0x1F, 0xAF, 0x7C, 0x62, 0x38, /* T2...|b8 */ - /* 0CE0 */ 0xBA, 0x20, 0x6F, 0xE8, 0xBE, 0x5C, 0xF8, 0x48, /* . o..\.H */ - /* 0CE8 */ 0x63, 0x30, 0x5F, 0x5A, 0x7C, 0x06, 0xE5, 0x43, /* c0_Z|..C */ - /* 0CF0 */ 0x04, 0xD7, 0x57, 0xC5, 0x43, 0x04, 0x3E, 0xA1, /* ..W.C.>. */ - /* 0CF8 */ 0x86, 0x88, 0x1E, 0xCF, 0xFF, 0xFF, 0x11, 0xCC, /* ........ */ - /* 0D00 */ 0x43, 0x64, 0x43, 0x03, 0xAF, 0x87, 0xA1, 0x01, /* CdC..... */ - /* 0D08 */ 0xA5, 0x98, 0xC0, 0x5E, 0x85, 0x87, 0x46, 0x4F, /* ...^..FO */ - /* 0D10 */ 0x3F, 0x3E, 0x04, 0x30, 0x08, 0xDF, 0x06, 0xD8, /* ?>.0.... */ - /* 0D18 */ 0x55, 0xC0, 0x57, 0x21, 0x83, 0x24, 0x18, 0xE7, /* U.W!.$.. */ - /* 0D20 */ 0x64, 0x41, 0x07, 0x07, 0x8E, 0x21, 0x79, 0x70, /* dA...!yp */ - /* 0D28 */ 0xF0, 0x07, 0xE3, 0x21, 0x70, 0x60, 0xCF, 0xE0, /* ...!p`.. */ - /* 0D30 */ 0xB9, 0xE8, 0x31, 0xD8, 0xA7, 0x1D, 0x9F, 0x4A, /* ..1....J */ - /* 0D38 */ 0xC0, 0x77, 0xE6, 0x04, 0xC7, 0xE9, 0x1D, 0x7B, /* .w.....{ */ - /* 0D40 */ 0x29, 0xF0, 0x08, 0x1E, 0xAD, 0x3C, 0x02, 0x7E, /* )....<.~ */ - /* 0D48 */ 0xB4, 0x02, 0x66, 0xFF, 0xFF, 0xA3, 0x15, 0x30, /* ..f....0 */ - /* 0D50 */ 0x09, 0x7A, 0xE6, 0xA4, 0x03, 0x77, 0x34, 0x18, /* .z...w4. */ - /* 0D58 */ 0xD4, 0xD1, 0x0A, 0x5C, 0x11, 0xC0, 0x75, 0xDC, /* ...\..u. */ - /* 0D60 */ 0xF0, 0xD1, 0x02, 0xCE, 0x50, 0x0F, 0xDA, 0x07, /* ....P... */ - /* 0D68 */ 0x65, 0xCF, 0xDA, 0x97, 0x21, 0x76, 0xB4, 0x00, /* e...!v.. */ - /* 0D70 */ 0x97, 0x89, 0x43, 0x08, 0xD0, 0x04, 0x3E, 0x89, /* ..C...>. */ - /* 0D78 */ 0x67, 0xEF, 0x43, 0x03, 0xB3, 0x8A, 0xA1, 0x01, /* g.C..... */ - /* 0D80 */ 0xA5, 0xA3, 0x01, 0xEE, 0x44, 0x81, 0xFD, 0xFF, /* ....D... */ - /* 0D88 */ 0x9F, 0x28, 0x60, 0xDE, 0x30, 0x70, 0x07, 0x0A, /* .(`.0p.. */ - /* 0D90 */ 0xC0, 0xCD, 0xE9, 0xDB, 0xE3, 0xE2, 0xD0, 0x38, /* .......8 */ - /* 0D98 */ 0xC4, 0xE7, 0xA7, 0x73, 0xF6, 0xD1, 0xE8, 0x4C, /* ...s...L */ - /* 0DA0 */ 0x71, 0x67, 0x11, 0x30, 0x9C, 0x7D, 0x11, 0x8F, /* qg.0.}.. */ - /* 0DA8 */ 0x18, 0x03, 0xF9, 0x81, 0x21, 0x59, 0x30, 0x28, /* ....!Y0( */ - /* 0DB0 */ 0x16, 0x0F, 0xC5, 0x07, 0x03, 0x0E, 0xEC, 0x23, /* .......# */ - /* 0DB8 */ 0x02, 0x3B, 0x17, 0xB0, 0x73, 0xAD, 0xE1, 0xF8, /* .;..s... */ - /* 0DC0 */ 0x59, 0xC0, 0xA7, 0x84, 0xB7, 0xA6, 0x17, 0x7B, /* Y......{ */ - /* 0DC8 */ 0x9F, 0xD7, 0x7D, 0xD6, 0x08, 0xC9, 0xCE, 0xF4, /* ..}..... */ - /* 0DD0 */ 0x3E, 0x89, 0xE2, 0x0E, 0xA2, 0x70, 0x4E, 0x9F, /* >....pN. */ - /* 0DD8 */ 0xE0, 0x22, 0xF0, 0x65, 0xDF, 0xA3, 0xE0, 0xA7, /* .".e.... */ - /* 0DE0 */ 0x07, 0xCF, 0xF1, 0x8D, 0xC1, 0xA7, 0x07, 0xE6, /* ........ */ - /* 0DE8 */ 0x7E, 0xF8, 0x9A, 0xF1, 0x33, 0xC3, 0xE3, 0x43, /* ~...3..C */ - /* 0DF0 */ 0x88, 0x27, 0xE2, 0xDA, 0xA6, 0x20, 0x5B, 0x18, /* .'... [. */ - /* 0DF8 */ 0x42, 0x09, 0xF4, 0xFF, 0x8F, 0x10, 0xE5, 0x6D, /* B......m */ - /* 0E00 */ 0x20, 0xCA, 0x29, 0x44, 0x88, 0x12, 0xA4, 0xB1, /* .)D.... */ - /* 0E08 */ 0xC9, 0x0B, 0x35, 0xCA, 0xD9, 0x45, 0x6E, 0x6D, /* ..5..Enm */ - /* 0E10 */ 0xF6, 0x82, 0x0B, 0x14, 0x2A, 0x66, 0x9C, 0x28, /* ....*f.( */ - /* 0E18 */ 0xEF, 0x10, 0xB1, 0xDA, 0x1F, 0x04, 0x91, 0xF4, /* ........ */ - /* 0E20 */ 0x32, 0xD0, 0x71, 0xC9, 0x91, 0x0E, 0x7D, 0xE8, /* 2.q...}. */ - /* 0E28 */ 0x61, 0xFB, 0x04, 0x8C, 0x3F, 0x48, 0xE2, 0xAE, /* a...?H.. */ - /* 0E30 */ 0x2A, 0x3E, 0x28, 0xF8, 0x00, 0x80, 0x77, 0x09, /* *>(...w. */ - /* 0E38 */ 0xA8, 0x5B, 0x9D, 0xC7, 0xED, 0xF3, 0x06, 0xF8, /* .[...... */ - /* 0E40 */ 0xAF, 0x17, 0x58, 0x82, 0xF2, 0x07, 0x81, 0x1A, /* ..X..... */ - /* 0E48 */ 0x99, 0xA1, 0x3D, 0xCC, 0xB7, 0x19, 0x43, 0xBE, /* ..=...C. */ - /* 0E50 */ 0x07, 0x1C, 0x16, 0x3B, 0x27, 0xF9, 0xF0, 0x08, /* ...;'... */ - /* 0E58 */ 0x1C, 0x8E, 0x01, 0x4F, 0x1B, 0xBE, 0x51, 0x7B, /* ...O..Q{ */ - /* 0E60 */ 0xBE, 0x3E, 0x62, 0x01, 0x8E, 0xFE, 0xFF, 0x47, /* .>b....G */ - /* 0E68 */ 0x2C, 0x30, 0x9D, 0xDF, 0x7D, 0x82, 0x01, 0xC7, /* ,0..}... */ - /* 0E70 */ 0xCD, 0x82, 0x9F, 0x61, 0x00, 0x67, 0x40, 0xCF, /* ...a.g@. */ - /* 0E78 */ 0x30, 0x60, 0x1F, 0x2A, 0x6E, 0x08, 0x5C, 0xEE, /* 0`.*n.\. */ - /* 0E80 */ 0x8A, 0x28, 0x90, 0x05, 0xC2, 0xA0, 0x0E, 0xFD, /* .(...... */ - /* 0E88 */ 0xE4, 0x08, 0x42, 0xCF, 0x9C, 0x70, 0x86, 0x72, /* ..B..p.r */ - /* 0E90 */ 0xB2, 0xBD, 0x5F, 0x1D, 0xC8, 0x2D, 0xC2, 0x43, /* .._..-.C */ - /* 0E98 */ 0x3D, 0x8B, 0xC7, 0x04, 0x76, 0xDA, 0x02, 0x36, /* =...v..6 */ - /* 0EA0 */ 0xFF, 0xFF, 0xE3, 0x29, 0xB0, 0x98, 0xF7, 0xD3, /* ...).... */ - /* 0EA8 */ 0x69, 0x84, 0x63, 0x03, 0xFB, 0x71, 0x0B, 0x38, /* i.c..q.8 */ - /* 0EB0 */ 0x1D, 0xCC, 0xE0, 0xDC, 0x7F, 0xD8, 0x2D, 0x1A, /* ......-. */ - /* 0EB8 */ 0x37, 0x34, 0xB0, 0x0D, 0xCC, 0x43, 0x03, 0x3E, /* 74...C.> */ - /* 0EC0 */ 0x27, 0x47, 0x30, 0x9E, 0x98, 0xF8, 0x55, 0xE2, /* 'G0...U. */ - /* 0EC8 */ 0xE1, 0x89, 0x1F, 0x43, 0xC0, 0xFA, 0xFF, 0x3F, /* ...C...? */ - /* 0ED0 */ 0x99, 0x01, 0xF6, 0x84, 0x1E, 0xCB, 0x50, 0xD2, /* ......P. */ - /* 0ED8 */ 0x4E, 0x66, 0x80, 0xC0, 0xFB, 0xD8, 0x3B, 0xC3, /* Nf....;. */ - /* 0EE0 */ 0x4B, 0x83, 0xE7, 0x74, 0xD2, 0xCF, 0x62, 0x3E, /* K..t..b> */ - /* 0EE8 */ 0x99, 0x19, 0x21, 0x0A, 0xBB, 0x8F, 0x19, 0xAD, /* ..!..... */ - /* 0EF0 */ 0x37, 0x14, 0xCD, 0x3C, 0xE8, 0x3B, 0x99, 0x51, /* 7..<.;.Q */ - /* 0EF8 */ 0x62, 0x46, 0x6A, 0x0E, 0x4C, 0x48, 0x11, 0x0F, /* bFj.LH.. */ - /* 0F00 */ 0x27, 0x4A, 0x88, 0x60, 0xAF, 0x13, 0x6F, 0x67, /* 'J.`..og */ - /* 0F08 */ 0x4F, 0x66, 0x4C, 0xD6, 0xC9, 0x0C, 0x24, 0xFF, /* OfL...$. */ - /* 0F10 */ 0xFF, 0x93, 0x19, 0x98, 0x5C, 0x9F, 0xCC, 0x80, /* ....\... */ - /* 0F18 */ 0xCA, 0x39, 0x0A, 0x7F, 0x32, 0x03, 0x78, 0x74, /* .9..2.xt */ - /* 0F20 */ 0xC0, 0xC2, 0x9D, 0xCC, 0xC0, 0xF2, 0xFF, 0x3F, /* .......? */ - /* 0F28 */ 0xC4, 0x00, 0xCE, 0xC7, 0x0A, 0x63, 0x0C, 0x3C, /* .....c.< */ - /* 0F30 */ 0xDA, 0xC1, 0x0C, 0x15, 0xE6, 0x6C, 0x86, 0x0E, /* .....l.. */ - /* 0F38 */ 0x72, 0x08, 0xA1, 0xC1, 0x0E, 0x21, 0x50, 0xE6, /* r....!P. */ - /* 0F40 */ 0x72, 0xA0, 0xA7, 0xF0, 0x9A, 0xE0, 0x73, 0x14, /* r.....s. */ - /* 0F48 */ 0xD8, 0x0F, 0x67, 0xC0, 0xE1, 0xD4, 0x80, 0x0F, /* ..g..... */ - /* 0F50 */ 0x74, 0xE2, 0x42, 0x8F, 0xC2, 0x23, 0x0E, 0x58, /* t.B..#.X */ - /* 0F58 */ 0xFD, 0xC0, 0xC8, 0xFF, 0xFF, 0x64, 0x06, 0x18, /* .....d.. */ - /* 0F60 */ 0x78, 0x6A, 0xF8, 0x40, 0x82, 0x63, 0x31, 0xEA, /* xj.@.c1. */ - /* 0F68 */ 0x1B, 0xC4, 0x21, 0xBE, 0x8D, 0xF8, 0xE8, 0xFE, /* ..!..... */ - /* 0F70 */ 0x6A, 0xE2, 0x4B, 0x00, 0xE6, 0x42, 0xE2, 0xD3, /* j.K..B.. */ - /* 0F78 */ 0x09, 0xB3, 0x70, 0x38, 0x03, 0x5A, 0x43, 0x60, /* ..p8.ZC` */ - /* 0F80 */ 0x57, 0x26, 0xCF, 0x9C, 0x0F, 0xE1, 0x6C, 0x3C, /* W&....l< */ - /* 0F88 */ 0x7A, 0xDC, 0xE9, 0x04, 0xDE, 0x38, 0x7C, 0x3A, /* z....8|: */ - /* 0F90 */ 0x01, 0x5E, 0x07, 0x0C, 0xCC, 0x0C, 0xC2, 0x3F, /* .^.....? */ - /* 0F98 */ 0x84, 0xB0, 0x21, 0x9C, 0xAA, 0xC7, 0x70, 0xEE, /* ..!...p. */ - /* 0FA0 */ 0xAF, 0x38, 0x3E, 0x9D, 0x80, 0xF3, 0xFF, 0x7F, /* .8>..... */ - /* 0FA8 */ 0x62, 0x03, 0x0C, 0x0A, 0x7E, 0x32, 0xF8, 0xB8, /* b...~2.. */ - /* 0FB0 */ 0x46, 0x25, 0xC2, 0xA0, 0x8E, 0xE6, 0x80, 0x7B, /* F%.....{ */ - /* 0FB8 */ 0x98, 0x27, 0x36, 0x26, 0x6F, 0xC5, 0x1A, 0x8B, /* .'6&o... */ - /* 0FC0 */ 0x4F, 0x6C, 0x30, 0xFF, 0xFF, 0x27, 0x36, 0x80, /* Ol0..'6. */ - /* 0FC8 */ 0xD1, 0x87, 0x20, 0xB0, 0xFD, 0xFF, 0x0F, 0x41, /* .. ....A */ - /* 0FD0 */ 0x60, 0x1C, 0xA0, 0x0F, 0x41, 0x80, 0x9B, 0xD3, /* `...A... */ - /* 0FD8 */ 0x09, 0xEE, 0xC4, 0x07, 0xB6, 0x63, 0x10, 0x60, /* .....c.` */ - /* 0FE0 */ 0x6D, 0xE8, 0x3E, 0x06, 0x81, 0xF9, 0xFF, 0x3F, /* m.>....? */ - /* 0FE8 */ 0x5A, 0x98, 0xA3, 0xE0, 0xC2, 0x8E, 0x7C, 0x28, /* Z.....|( */ - /* 0FF0 */ 0x29, 0xA7, 0x3E, 0xB4, 0x0C, 0x20, 0x69, 0x38, /* ).>.. i8 */ - /* 0FF8 */ 0xC9, 0x01, 0x9D, 0xD3, 0x3D, 0x70, 0x92, 0x75, /* ....=p.u */ - /* 1000 */ 0xEA, 0x40, 0x8F, 0xC7, 0xA0, 0xAF, 0x1C, 0xBE, /* .@...... */ - /* 1008 */ 0x12, 0xF0, 0x23, 0x07, 0x93, 0x00, 0xAA, 0x41, /* ..#....A */ - /* 1010 */ 0xFA, 0xCC, 0x07, 0x9C, 0x8E, 0x1C, 0xE0, 0x38, /* .......8 */ - /* 1018 */ 0x26, 0x05, 0xC6, 0xDE, 0x0E, 0xDE, 0x22, 0x3D, /* &....."= */ - /* 1020 */ 0x89, 0xA7, 0xA1, 0xE3, 0x0C, 0x51, 0x38, 0x26, /* .....Q8& */ - /* 1028 */ 0x39, 0x18, 0x44, 0x7A, 0x95, 0x62, 0x03, 0x7C, /* 9.Dz.b.| */ - /* 1030 */ 0xAB, 0xF1, 0xD9, 0xC8, 0x07, 0x10, 0x78, 0xE3, /* ......x. */ - /* 1038 */ 0xF6, 0xD8, 0x61, 0xFF, 0xFF, 0x0F, 0x75, 0xC0, /* ..a...u. */ - /* 1040 */ 0x01, 0xE2, 0xA4, 0xF8, 0x21, 0xC3, 0x98, 0x67, /* ....!..g */ - /* 1048 */ 0xC5, 0x0F, 0x75, 0x80, 0xF5, 0x18, 0x27, 0x3A, /* ..u...': */ - /* 1050 */ 0x94, 0xF0, 0x43, 0x1D, 0x20, 0xE8, 0xFF, 0x7F, /* ..C. ... */ - /* 1058 */ 0xA8, 0x03, 0x86, 0x38, 0x6F, 0x24, 0xD1, 0x1E, /* ...8o$.. */ - /* 1060 */ 0xEA, 0x98, 0xE8, 0x43, 0x1D, 0x40, 0xC8, 0xFF, /* ...C.@.. */ - /* 1068 */ 0xFF, 0xA1, 0x0E, 0x18, 0x9E, 0x87, 0x00, 0xAE, /* ........ */ - /* 1070 */ 0x9C, 0xEF, 0xC0, 0x7C, 0x22, 0x02, 0xEF, 0xFF, /* ...|"... */ - /* 1078 */ 0xFF, 0x7C, 0x07, 0xB8, 0x1B, 0x2D, 0xCC, 0x51, /* .|...-.Q */ - /* 1080 */ 0x70, 0x41, 0xAF, 0x0E, 0x03, 0x51, 0x09, 0x30, /* pA...Q.0 */ - /* 1088 */ 0x28, 0x02, 0xC7, 0x5F, 0x9B, 0x60, 0x1C, 0xEA, /* (.._.`.. */ - /* 1090 */ 0x7C, 0x87, 0x3E, 0x2F, 0x78, 0xD8, 0x4F, 0x05, /* |.>/x.O. */ - /* 1098 */ 0x9E, 0xC4, 0xA9, 0xFA, 0x5A, 0x70, 0x14, 0x4F, /* ....Zp.O */ - /* 10A0 */ 0x00, 0x3E, 0xE1, 0x01, 0xFF, 0xA1, 0xC1, 0x9A, /* .>...... */ - /* 10A8 */ 0x44, 0xF1, 0x43, 0x03, 0xF5, 0x11, 0xE4, 0xFF, /* D.C..... */ - /* 10B0 */ 0x7F, 0x68, 0xC0, 0x28, 0xEA, 0xF9, 0x06, 0x7D, /* .h.(...} */ - /* 10B8 */ 0xCC, 0xF2, 0xD9, 0x20, 0xE6, 0x0B, 0x48, 0x84, /* ... ..H. */ - /* 10C0 */ 0x07, 0x10, 0x5F, 0x1F, 0xD8, 0x71, 0xD2, 0x67, /* .._..q.g */ - /* 10C8 */ 0xA0, 0x40, 0x51, 0xDE, 0x37, 0xF8, 0x09, 0x07, /* .@Q.7... */ - /* 10D0 */ 0x5C, 0x83, 0xF3, 0x09, 0x07, 0xBC, 0x87, 0x23, /* \......# */ - /* 10D8 */ 0x1F, 0x4B, 0xC0, 0x77, 0xD0, 0x84, 0x73, 0x81, /* .K.w..s. */ - /* 10E0 */ 0xF1, 0x8D, 0x8D, 0x9D, 0x06, 0xC0, 0x76, 0x00, /* ......v. */ - /* 10E8 */ 0x06, 0xDF, 0x69, 0x00, 0x1C, 0xC7, 0x24, 0x7E, /* ..i...$~ */ - /* 10F0 */ 0x3A, 0x04, 0x13, 0xCC, 0xC1, 0xBC, 0x34, 0xFB, /* :.....4. */ - /* 10F8 */ 0xFF, 0xEF, 0xFD, 0x94, 0x43, 0xCF, 0x86, 0x80, /* ....C... */ - /* 1100 */ 0x75, 0x49, 0x07, 0x43, 0x94, 0x88, 0xB3, 0x21, /* uI.C...! */ - /* 1108 */ 0x20, 0xFD, 0xFF, 0x7F, 0x36, 0xC4, 0x20, 0xC4, /* ...6. . */ - /* 1110 */ 0x09, 0xFC, 0x12, 0xD1, 0xDC, 0xD9, 0x90, 0xAE, /* ........ */ - /* 1118 */ 0xD8, 0x67, 0x43, 0x80, 0xE1, 0xFF, 0xFF, 0x23, /* .gC....# */ - /* 1120 */ 0x00, 0xF6, 0x7C, 0x04, 0x38, 0x3D, 0x64, 0x83, /* ..|.8=d. */ - /* 1128 */ 0xE7, 0x14, 0x08, 0xE3, 0xE4, 0x03, 0x38, 0xFE, /* ......8. */ - /* 1130 */ 0xFF, 0x8F, 0x15, 0xE6, 0x18, 0x78, 0xEA, 0x97, /* .....x.. */ - /* 1138 */ 0x9B, 0x8F, 0x03, 0x54, 0xD4, 0x2B, 0xC2, 0x30, /* ...T.+.0 */ - /* 1140 */ 0x94, 0xC5, 0x87, 0x05, 0x1F, 0x11, 0xF8, 0x61, /* .......a */ - /* 1148 */ 0xC1, 0x23, 0xA8, 0x78, 0x9C, 0xF4, 0x74, 0xE3, /* .#.x..t. */ - /* 1150 */ 0x33, 0x21, 0x3B, 0x24, 0x38, 0xFC, 0x20, 0xE9, /* 3!;$8. . */ - /* 1158 */ 0x41, 0x13, 0x3C, 0xE7, 0x23, 0x78, 0xB7, 0x1E, /* A.<.#x.. */ - /* 1160 */ 0x38, 0xA7, 0x02, 0xC0, 0x4D, 0xAE, 0x27, 0xA3, /* 8...M.'. */ - /* 1168 */ 0x4E, 0x17, 0x0E, 0x70, 0x8E, 0x92, 0x8D, 0x63, /* N..p...c */ - /* 1170 */ 0x08, 0xE5, 0x70, 0xCC, 0xB7, 0x87, 0xA6, 0xC9, /* ..p..... */ - /* 1178 */ 0x4E, 0x56, 0x30, 0x63, 0x41, 0xEA, 0x24, 0xE0, /* NV0cA.$. */ - /* 1180 */ 0x01, 0x38, 0x10, 0x8C, 0xB4, 0x93, 0x68, 0x34, /* .8....h4 */ - /* 1188 */ 0x86, 0xB3, 0x5A, 0x18, 0xC1, 0x19, 0xC4, 0xC7, /* ..Z..... */ - /* 1190 */ 0x11, 0xE7, 0x3A, 0x19, 0xA1, 0x3F, 0x07, 0x3E, /* ..:..?.> */ - /* 1198 */ 0x15, 0x61, 0x82, 0xDC, 0x4B, 0xE8, 0xBC, 0x7D, /* .a..K..} */ - /* 11A0 */ 0x37, 0xE0, 0x57, 0x61, 0x8F, 0xC5, 0xFF, 0x7F, /* 7.Wa.... */ - /* 11A8 */ 0x60, 0xDF, 0x4E, 0xC0, 0x31, 0x17, 0xAB, 0x01, /* `.N.1... */ - /* 11B0 */ 0x45, 0x0D, 0xC0, 0x68, 0x98, 0x53, 0xC0, 0x53, /* E..h.S.S */ - /* 11B8 */ 0x09, 0xB8, 0x82, 0xCD, 0x0D, 0x7D, 0x61, 0xB1, /* .....}a. */ - /* 11C0 */ 0xD6, 0xA9, 0xE8, 0x14, 0xF4, 0x3E, 0x70, 0x70, /* .....>pp */ - /* 11C8 */ 0xC0, 0x63, 0xF6, 0x1E, 0x1C, 0x2C, 0x34, 0x0F, /* .c...,4. */ - /* 11D0 */ 0x0E, 0x6C, 0xD9, 0x06, 0x87, 0x56, 0x72, 0x17, /* .l...Vr. */ - /* 11D8 */ 0x21, 0x87, 0x0F, 0xFC, 0xEC, 0x80, 0x03, 0xA0, /* !....... */ - /* 11E0 */ 0x67, 0x07, 0x0B, 0xC9, 0xB3, 0x03, 0x9B, 0xBE, /* g....... */ - /* 11E8 */ 0xB3, 0x08, 0x28, 0x70, 0xFE, 0xFF, 0x11, 0xDE, /* ..(p.... */ - /* 11F0 */ 0x3B, 0x7C, 0x6E, 0x79, 0xF6, 0x60, 0x63, 0x78, /* ;|ny.`cx */ - /* 11F8 */ 0x74, 0x31, 0x9A, 0xD1, 0xB9, 0xA6, 0xDB, 0x04, /* t1...... */ - /* 1200 */ 0x4A, 0xC5, 0x6D, 0x82, 0x82, 0xF8, 0x06, 0xE0, /* J.m..... */ - /* 1208 */ 0x84, 0x34, 0xBA, 0x75, 0xE2, 0x66, 0x62, 0xFC, /* .4.u.fb. */ - /* 1210 */ 0x47, 0x0C, 0x1F, 0x11, 0x0E, 0xE9, 0x6C, 0x4D, /* G.....lM */ - /* 1218 */ 0x30, 0x0F, 0xA4, 0x9E, 0x81, 0xBE, 0xB3, 0xE1, /* 0....... */ - /* 1220 */ 0x67, 0x1F, 0xF2, 0xC1, 0xC5, 0xD3, 0xF0, 0xF5, /* g....... */ - /* 1228 */ 0x86, 0xDC, 0x3B, 0xE8, 0xB4, 0x7D, 0x66, 0xC0, /* ..;..}f. */ - /* 1230 */ 0x1C, 0x74, 0x7D, 0x9D, 0x7A, 0x83, 0x27, 0x57, /* .t}.z.'W */ - /* 1238 */ 0x09, 0xEA, 0xE1, 0x02, 0x42, 0x2F, 0x34, 0xBE, /* ....B/4. */ - /* 1240 */ 0xDC, 0x25, 0x78, 0xE0, 0xF4, 0xE9, 0xEE, 0xBD, /* .%x..... */ - /* 1248 */ 0x84, 0x9D, 0xF1, 0x12, 0xBC, 0xE0, 0x25, 0x98, /* ......%. */ - /* 1250 */ 0x77, 0x10, 0xA8, 0x51, 0x79, 0x10, 0x98, 0xAB, /* w..Qy... */ - /* 1258 */ 0x3C, 0xCB, 0x37, 0x06, 0x54, 0xB2, 0x8B, 0x16, /* <.7.T... */ - /* 1260 */ 0x3D, 0xC3, 0xBC, 0xC3, 0xF8, 0x92, 0xE0, 0xEB, /* =....... */ - /* 1268 */ 0x87, 0xCF, 0x2D, 0x5E, 0xC0, 0xEB, 0x16, 0x0C, /* ..-^.... */ - /* 1270 */ 0x82, 0x67, 0xA0, 0x57, 0x17, 0xDF, 0xD9, 0x0D, /* .g.W.... */ - /* 1278 */ 0xFC, 0x2A, 0xF0, 0x46, 0x13, 0x22, 0x98, 0x61, /* .*.F.".a */ - /* 1280 */ 0x0F, 0xFF, 0xDD, 0xDD, 0xA8, 0xBE, 0xE9, 0x18, /* ........ */ - /* 1288 */ 0xEB, 0x75, 0xC4, 0x23, 0xE5, 0xC7, 0x96, 0x03, /* .u.#.... */ - /* 1290 */ 0x8A, 0xF4, 0xF2, 0xE6, 0x09, 0xF8, 0x2C, 0xE3, /* ......,. */ - /* 1298 */ 0x53, 0xDD, 0x49, 0xF9, 0x7A, 0x68, 0xF4, 0x57, /* S.I.zh.W */ - /* 12A0 */ 0x08, 0x1F, 0x7E, 0x8C, 0xEC, 0x73, 0x0E, 0x3B, /* ..~..s.; */ - /* 12A8 */ 0xDF, 0xB1, 0x41, 0x71, 0xC4, 0x07, 0x86, 0x97, /* ..Aq.... */ - /* 12B0 */ 0x1A, 0x4F, 0x85, 0x9D, 0xBB, 0x60, 0x1C, 0x1C, /* .O...`.. */ - /* 12B8 */ 0xD8, 0xB1, 0x08, 0x73, 0x7C, 0x05, 0xD7, 0xC9, /* ...s|... */ - /* 12C0 */ 0xE6, 0xFF, 0xFF, 0xE4, 0x00, 0x6E, 0x78, 0xCC, /* .....nx. */ - /* 12C8 */ 0xC1, 0xD7, 0xE7, 0x0D, 0xDF, 0x0C, 0x3C, 0x2E, /* ......<. */ - /* 12D0 */ 0x7E, 0xE4, 0xF0, 0x49, 0xE3, 0xA5, 0xD3, 0xD8, /* ~..I.... */ - /* 12D8 */ 0xA7, 0xE9, 0xA3, 0xD1, 0xCB, 0x9B, 0x4F, 0x2F, /* ......O/ */ - /* 12E0 */ 0x18, 0x58, 0x5F, 0x1A, 0x38, 0xAC, 0xD1, 0xC2, /* .X_.8... */ - /* 12E8 */ 0x3E, 0x06, 0x9C, 0xB9, 0x2F, 0x44, 0xB8, 0xC3, /* >.../D.. */ - /* 12F0 */ 0x23, 0x58, 0x00, 0xF1, 0xB7, 0x92, 0x47, 0x0E, /* #X....G. */ - /* 12F8 */ 0x4F, 0xC0, 0x80, 0x4C, 0xD3, 0xBA, 0x74, 0x20, /* O..L..t */ - /* 1300 */ 0xE2, 0xA7, 0x3C, 0x2B, 0x5F, 0x99, 0x2E, 0x43, /* ..<+_..C */ - /* 1308 */ 0x0C, 0xE3, 0xA9, 0xF2, 0xF1, 0xC3, 0xB3, 0xF1, /* ........ */ - /* 1310 */ 0x51, 0xC0, 0xC7, 0x28, 0xCF, 0xFC, 0x8C, 0x22, /* Q..(..." */ - /* 1318 */ 0xBD, 0x32, 0x10, 0x50, 0x9D, 0x88, 0xB8, 0x42, /* .2.P...B */ - /* 1320 */ 0x18, 0x89, 0xA1, 0xD1, 0x9D, 0x83, 0xC7, 0x1F, /* ........ */ - /* 1328 */ 0x22, 0x05, 0x31, 0xA0, 0x6F, 0x2E, 0xC0, 0xF4, /* ".1.o... */ - /* 1330 */ 0x4C, 0x04, 0x5C, 0xFE, 0xFF, 0x37, 0x17, 0x80, /* L.\..7.. */ - /* 1338 */ 0xFF, 0xFF, 0xFF, 0x9B, 0x0B, 0xE0, 0xE6, 0xFE, /* ........ */ - /* 1340 */ 0xE0, 0x9B, 0x0B, 0x70, 0x8D, 0xB4, 0x2A, 0x7A, /* ...p..*z */ - /* 1348 */ 0x61, 0x77, 0x08, 0x18, 0xD4, 0x9D, 0x1D, 0x70, /* aw.....p */ - /* 1350 */ 0x78, 0x2B, 0x78, 0x67, 0x87, 0xF5, 0xFF, 0xBF, /* x+xg.... */ - /* 1358 */ 0xB3, 0xC3, 0xC3, 0x8C, 0x13, 0xE5, 0x85, 0x21, /* .......! */ - /* 1360 */ 0xC6, 0x3B, 0x3B, 0x0B, 0xF0, 0x26, 0xD0, 0x51, /* .;;..&.Q */ - /* 1368 */ 0xC6, 0x77, 0x76, 0x80, 0x1F, 0x67, 0xD8, 0x77, /* .wv..g.w */ - /* 1370 */ 0x69, 0xF0, 0x5E, 0x75, 0x81, 0xF5, 0xFF, 0xFF, /* i.^u.... */ - /* 1378 */ 0xAA, 0x0B, 0x3C, 0x04, 0xDF, 0xA7, 0x41, 0x3E, /* ..<...A> */ - /* 1380 */ 0x5E, 0x30, 0x8C, 0x83, 0x2B, 0x27, 0xA1, 0xC7, /* ^0..+'.. */ - /* 1388 */ 0x02, 0x6B, 0x85, 0x41, 0xDD, 0xA9, 0xC1, 0xA5, /* .k.A.... */ - /* 1390 */ 0x09, 0x5C, 0x17, 0x5F, 0x1F, 0x6A, 0x7C, 0xA4, /* .\._.j|. */ - /* 1398 */ 0xC5, 0x9F, 0x2F, 0x70, 0x01, 0x86, 0x4C, 0x4F, /* ../p..LO */ - /* 13A0 */ 0x65, 0x30, 0xAE, 0x29, 0x3E, 0x95, 0x61, 0xEE, /* e0.)>.a. */ - /* 13A8 */ 0x0E, 0x1E, 0x90, 0x8F, 0x18, 0xC0, 0x67, 0x15, /* ......g. */ - /* 13B0 */ 0x1E, 0x18, 0xEE, 0xB4, 0xE0, 0x9B, 0x92, 0x41, /* .......A */ - /* 13B8 */ 0xCF, 0x31, 0xA8, 0x8F, 0x3C, 0x27, 0xEF, 0x7B, /* .1..<'.{ */ - /* 13C0 */ 0xC2, 0xE3, 0x84, 0xA3, 0x9E, 0x83, 0xE8, 0xD8, /* ........ */ - /* 13C8 */ 0xC0, 0x71, 0xDC, 0xC0, 0xFD, 0xFF, 0xC7, 0x06, /* .q...... */ - /* 13D0 */ 0xEF, 0x70, 0x83, 0x3B, 0xE8, 0xF8, 0x62, 0x70, /* .p.;..bp */ - /* 13D8 */ 0x5C, 0x18, 0xB8, 0xE7, 0x02, 0x0F, 0xC3, 0x37, /* \......7 */ - /* 13E0 */ 0x1D, 0x8F, 0x08, 0x33, 0xFE, 0xD7, 0x3F, 0x23, /* ...3..?# */ - /* 13E8 */ 0x04, 0xC4, 0x5F, 0x8C, 0xD8, 0x80, 0xC1, 0x78, /* .._....x */ - /* 13F0 */ 0x6B, 0xF3, 0xF5, 0x0D, 0x37, 0x60, 0x5F, 0x1D, /* k...7`_. */ - /* 13F8 */ 0x7C, 0xC1, 0xF0, 0x09, 0xCC, 0xE8, 0x2F, 0x30, /* |...../0 */ - /* 1400 */ 0x4F, 0x62, 0x3E, 0x36, 0x90, 0x0B, 0x1C, 0x1D, /* Ob>6.... */ - /* 1408 */ 0x30, 0x38, 0x00, 0x3D, 0x60, 0xF8, 0x87, 0x8B, /* 08.=`... */ - /* 1410 */ 0x77, 0x39, 0x30, 0x5C, 0x05, 0x7D, 0x5C, 0xF0, /* w90\.}\. */ - /* 1418 */ 0xB1, 0xC7, 0x8A, 0xEE, 0x72, 0xE8, 0x9B, 0x9C, /* ....r... */ - /* 1420 */ 0x61, 0xE2, 0x18, 0xE2, 0x0D, 0x8C, 0xDD, 0x25, /* a......% */ - /* 1428 */ 0xC8, 0x61, 0x0E, 0xEA, 0x5D, 0xC2, 0x73, 0xE0, /* .a..].s. */ - /* 1430 */ 0x67, 0x0B, 0x9F, 0xE0, 0x7C, 0xF3, 0x09, 0x71, /* g...|..q */ - /* 1438 */ 0xAA, 0x8F, 0x56, 0xEF, 0x01, 0x3E, 0x7A, 0xBC, /* ..V..>z. */ - /* 1440 */ 0x77, 0xF9, 0xEC, 0xC4, 0x2E, 0x02, 0x3E, 0x72, /* w.....>r */ - /* 1448 */ 0x19, 0xC7, 0xD3, 0xF4, 0x15, 0xD0, 0x43, 0x36, /* ......C6 */ - /* 1450 */ 0xD8, 0xAB, 0x86, 0x4F, 0x60, 0x3E, 0xBA, 0xE1, /* ...O`>.. */ - /* 1458 */ 0x8E, 0x51, 0x9E, 0x89, 0xA7, 0xEF, 0x3B, 0x08, /* .Q....;. */ - /* 1460 */ 0x3B, 0x92, 0x1C, 0x75, 0xA8, 0x6B, 0x7A, 0x44, /* ;..u.kzD */ - /* 1468 */ 0xF9, 0xFF, 0x9F, 0xD0, 0x81, 0xF8, 0xD6, 0x06, /* ........ */ - /* 1470 */ 0xCE, 0x68, 0xF7, 0x0F, 0xF4, 0x36, 0x3D, 0x32, /* .h...6=2 */ - /* 1478 */ 0xCC, 0xD1, 0x00, 0xD6, 0x25, 0x04, 0x5C, 0x77, /* ....%.\w */ - /* 1480 */ 0x0C, 0x5F, 0x42, 0x80, 0x4F, 0xD0, 0x4B, 0x04, /* ._B.O.K. */ - /* 1488 */ 0xFA, 0x9A, 0xE1, 0xD1, 0x3D, 0x02, 0x60, 0xAE, /* ....=.`. */ - /* 1490 */ 0x18, 0xEC, 0x58, 0xE0, 0xC3, 0x86, 0xAF, 0x01, /* ..X..... */ - /* 1498 */ 0xEC, 0x5E, 0xE0, 0x30, 0xF7, 0x08, 0x50, 0x81, /* .^.0..P. */ - /* 14A0 */ 0x7A, 0x78, 0xF0, 0xD5, 0xDE, 0x23, 0x40, 0x71, /* zx...#@q */ - /* 14A8 */ 0xB2, 0xF4, 0xA1, 0xC1, 0x03, 0xB5, 0xAA, 0x33, /* .......3 */ - /* 14B0 */ 0x26, 0x94, 0x23, 0x26, 0x3F, 0x9B, 0xF9, 0x26, /* &.#&?..& */ - /* 14B8 */ 0x81, 0xB9, 0x5D, 0xFA, 0x26, 0x01, 0x37, 0xCF, /* ..].&.7. */ - /* 14C0 */ 0x2C, 0x50, 0x49, 0x20, 0xF4, 0xFF, 0xBF, 0x49, /* ,PI ...I */ - /* 14C8 */ 0xC0, 0x85, 0xE9, 0xF2, 0x32, 0x43, 0xE7, 0x7F, /* ....2C.. */ - /* 14D0 */ 0xE0, 0xBE, 0xD5, 0x79, 0x84, 0x3E, 0x44, 0x30, /* ...y.>D0 */ - /* 14D8 */ 0x94, 0xF7, 0x3C, 0x9F, 0xC2, 0xF8, 0x19, 0xC2, /* ..<..... */ - /* 14E0 */ 0x07, 0x4C, 0x76, 0xA6, 0xE0, 0x67, 0x4D, 0xDC, /* .Lv..gM. */ - /* 14E8 */ 0x1D, 0xC0, 0x28, 0x6F, 0x9E, 0x9E, 0x00, 0x3B, /* ..(o...; */ - /* 14F0 */ 0x7F, 0x1A, 0xF9, 0xDD, 0xE0, 0x5D, 0xC0, 0xD3, /* .....].. */ - /* 14F8 */ 0xF7, 0xBD, 0x88, 0x9F, 0x28, 0xC0, 0x17, 0xEC, /* ....(... */ - /* 1500 */ 0x4E, 0x07, 0x05, 0xFA, 0x84, 0x3C, 0x22, 0xA3, /* N....<". */ - /* 1508 */ 0xFA, 0x88, 0xC0, 0x2F, 0x49, 0x60, 0x3C, 0x92, /* .../I`<. */ - /* 1510 */ 0xF8, 0x40, 0x01, 0x84, 0xEE, 0x05, 0xA8, 0xD3, /* .@...... */ - /* 1518 */ 0x07, 0x47, 0x3D, 0xE3, 0x17, 0x54, 0x63, 0xBE, /* .G=..Tc. */ - /* 1520 */ 0x5B, 0x3D, 0xC2, 0x79, 0x72, 0x98, 0xCB, 0x01, /* [=.yr... */ - /* 1528 */ 0x8B, 0x73, 0x4D, 0x02, 0xD5, 0x71, 0x97, 0x8F, /* .sM..q.. */ - /* 1530 */ 0x0E, 0xEE, 0xB5, 0x15, 0xFB, 0xFF, 0x27, 0x38, /* ......'8 */ - /* 1538 */ 0xB8, 0x77, 0x96, 0x77, 0x3E, 0x43, 0x79, 0x90, /* .w.w>Cy. */ - /* 1540 */ 0xE0, 0xBB, 0xB6, 0x82, 0xE3, 0xAA, 0x06, 0xE3, /* ........ */ - /* 1548 */ 0xD8, 0xC2, 0x2F, 0x79, 0x80, 0x9D, 0x61, 0x71, /* ../y..aq */ - /* 1550 */ 0xC1, 0x7F, 0x0F, 0x03, 0x51, 0x89, 0x30, 0x28, /* ....Q.0( */ - /* 1558 */ 0x02, 0xCB, 0xBB, 0xB7, 0x52, 0xF8, 0x43, 0x06, /* ....R.C. */ - /* 1560 */ 0xE3, 0x4D, 0x81, 0x4F, 0x1A, 0x3B, 0x6A, 0xE0, /* .M.O.;j. */ - /* 1568 */ 0xFB, 0xFF, 0x1F, 0x35, 0xD8, 0x86, 0x8A, 0xBB, /* ...5.... */ - /* 1570 */ 0x29, 0x82, 0x75, 0xAA, 0x98, 0x21, 0xF0, 0x60, /* ).u..!.` */ - /* 1578 */ 0x0F, 0x00, 0x9F, 0xAF, 0x7C, 0x06, 0x50, 0x14, /* ....|.P. */ - /* 1580 */ 0x18, 0xD4, 0xA1, 0x1D, 0xCE, 0x6D, 0x18, 0x70, /* .....m.p */ - /* 1588 */ 0x30, 0x62, 0xDC, 0xA5, 0x10, 0xEE, 0x94, 0xDF, /* 0b...... */ - /* 1590 */ 0x51, 0x62, 0x3F, 0x97, 0xB3, 0xE9, 0xE2, 0xAE, /* Qb?..... */ - /* 1598 */ 0xE6, 0x3E, 0x9D, 0xB0, 0x0B, 0x32, 0x8C, 0xB3, /* .>...2.. */ - /* 15A0 */ 0xC0, 0x23, 0xC0, 0xAB, 0x39, 0xBF, 0x20, 0x3F, /* .#..9. ? */ - /* 15A8 */ 0x17, 0xBF, 0x10, 0x3C, 0x26, 0x85, 0x78, 0x53, /* ...<&.xS */ - /* 15B0 */ 0x7A, 0x25, 0x36, 0xC6, 0x93, 0x71, 0x73, 0xB7, /* z%6..qs. */ - /* 15B8 */ 0x62, 0x72, 0xDE, 0x79, 0x41, 0x36, 0xC6, 0xD1, /* br.yA6.. */ - /* 15C0 */ 0x44, 0x8C, 0x72, 0x6E, 0x0F, 0x03, 0x91, 0x5F, /* D.rn..._ */ - /* 15C8 */ 0x90, 0x7D, 0x3F, 0x79, 0x21, 0x88, 0x18, 0xCD, /* .}?y!... */ - /* 15D0 */ 0x10, 0x41, 0x9F, 0x97, 0x8D, 0x15, 0x28, 0xDE, /* .A....(. */ - /* 15D8 */ 0x0B, 0x32, 0x13, 0xF8, 0x56, 0xD0, 0xC1, 0xC5, /* .2..V... */ - /* 15E0 */ 0x17, 0x64, 0xEC, 0xFF, 0xFF, 0x82, 0x0C, 0x30, /* .d.....0 */ - /* 15E8 */ 0xE2, 0x64, 0x04, 0xF8, 0x3C, 0x71, 0xE0, 0xCE, /* .d..