Merge ACPICA 20130517.
This commit is contained in:
commit
a9d8d09c46
@ -421,17 +421,20 @@ contrib/dev/acpica/components/resources/rsxface.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbfadt.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbfind.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbinstal.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbprint.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbutils.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbxface.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbxfload.c optional acpi
|
||||
contrib/dev/acpica/components/tables/tbxfroot.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utaddress.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utalloc.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utbuffer.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utcache.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utcopy.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utdebug.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utdecode.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utdelete.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/uterror.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/uteval.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utexcep.c optional acpi
|
||||
contrib/dev/acpica/components/utilities/utglobal.c optional acpi
|
||||
|
@ -19,9 +19,9 @@ fulldirs="common compiler components include os_specific"
|
||||
# files to remove
|
||||
stripdirs="generate libraries tests tools"
|
||||
stripfiles="Makefile README accygwin.h acefi.h achaiku.h acintel.h \
|
||||
aclinux.h acmsvc.h acnetbsd.h acos2.h acwin.h acwin64.h \
|
||||
new_table.txt osunixdir.c oswindir.c oswintbl.c oswinxf.c \
|
||||
readme.txt utclib.c"
|
||||
aclinux.h acmacosx.h acmsvc.h acnetbsd.h acos2.h acwin.h \
|
||||
acwin64.h new_table.txt oslinuxtbl.c osunixdir.c oswindir.c \
|
||||
oswintbl.c oswinxf.c readme.txt utclib.c"
|
||||
|
||||
# include files to canonify
|
||||
src_headers="acapps.h acbuffer.h accommon.h acconfig.h acdebug.h \
|
||||
|
@ -1,9 +1,109 @@
|
||||
----------------------------------------
|
||||
17 May 2013. Summary of changes for version 20130517:
|
||||
|
||||
1) ACPICA kernel-resident subsystem:
|
||||
|
||||
Fixed a regression introduced in version 20130328 for _INI methods. This
|
||||
change fixes a problem introduced in 20130328 where _INI methods are no
|
||||
longer executed properly because of a memory block that was not
|
||||
initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
|
||||
<tomasz.nowicki@linaro.org>.
|
||||
|
||||
Fixed a possible problem with the new extended sleep registers in the ACPI
|
||||
5.0 FADT. Do not use these registers (even if populated) unless the HW-
|
||||
reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
|
||||
1020. Lv Zheng.
|
||||
|
||||
Implemented return value repair code for _CST predefined objects: Sort the
|
||||
list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
|
||||
|
||||
Implemented a debug-only option to disable loading of SSDTs from the
|
||||
RSDT/XSDT during ACPICA initialization. This can be useful for debugging
|
||||
ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
|
||||
acglobal.h - ACPICA BZ 1005. Lv Zheng.
|
||||
|
||||
Fixed some issues in the ACPICA initialization and termination code:
|
||||
Tomasz Nowicki <tomasz.nowicki@linaro.org>
|
||||
1) Clear events initialized flag upon event component termination. ACPICA
|
||||
BZ 1013.
|
||||
2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
|
||||
3) Delete global lock pending lock during termination. ACPICA BZ 1012.
|
||||
4) Clear debug buffer global on termination to prevent possible multiple
|
||||
delete. ACPICA BZ 1010.
|
||||
|
||||
Standardized all switch() blocks across the entire source base. After many
|
||||
years, different formatting for switch() had crept in. This change makes
|
||||
the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
|
||||
|
||||
Split some files to enhance ACPICA modularity and configurability:
|
||||
1) Split buffer dump routines into utilities/utbuffer.c
|
||||
2) Split internal error message routines into utilities/uterror.c
|
||||
3) Split table print utilities into tables/tbprint.c
|
||||
4) Split iASL command-line option processing into asloptions.c
|
||||
|
||||
Makefile enhancements:
|
||||
1) Support for all new files above.
|
||||
2) Abort make on errors from any subcomponent. Chao Guan.
|
||||
3) Add build support for Apple Mac OS X. Liang Qi.
|
||||
|
||||
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: 96.0K Code, 27.0K Data, 123.0K Total
|
||||
Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
|
||||
Previous Release:
|
||||
Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
|
||||
Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
|
||||
|
||||
|
||||
2) iASL Compiler/Disassembler and Tools:
|
||||
|
||||
New utility: Implemented an easily portable version of the acpidump
|
||||
utility to extract ACPI tables from the system (or a file) in an ASCII hex
|
||||
dump format. The top-level code implements the various command line
|
||||
options, file I/O, and table dump routines. To port to a new host, only
|
||||
three functions need to be implemented to get tables -- since this
|
||||
functionality is OS-dependent. See the tools/acpidump/apmain.c module and
|
||||
the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
|
||||
1) The Windows version obtains the ACPI tables from the Registry.
|
||||
2) The Linux version is under development.
|
||||
3) Other hosts - If an OS-dependent module is submitted, it will be
|
||||
distributed with ACPICA.
|
||||
|
||||
iASL: Fixed a regression for -D preprocessor option (define symbol). A
|
||||
restructuring/change to the initialization sequence caused this option to
|
||||
no longer work properly.
|
||||
|
||||
iASL: Implemented a mechanism to disable specific warnings and remarks.
|
||||
Adds a new command line option, "-vw <messageid> as well as "#pragma
|
||||
disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
|
||||
|
||||
iASL: Fix for too-strict package object validation. The package object
|
||||
validation for return values from the predefined names is a bit too
|
||||
strict, it does not allow names references within the package (which will
|
||||
be resolved at runtime.) These types of references cannot be validated at
|
||||
compile time. This change ignores named references within package objects
|
||||
for names that return or define static packages.
|
||||
|
||||
Debugger: Fixed the 80-character command line limitation for the History
|
||||
command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
|
||||
|
||||
iASL: Added control method and package support for the -so option
|
||||
(generates AML offset table for BIOS support.)
|
||||
|
||||
iASL: issue a remark if a non-serialized method creates named objects. If
|
||||
a thread blocks within the method for any reason, and another thread
|
||||
enters the method, the method will fail because an attempt will be made to
|
||||
create the same (named) object twice. In this case, issue a remark that
|
||||
the method should be marked serialized. NOTE: may become a warning later.
|
||||
ACPICA BZ 909.
|
||||
|
||||
----------------------------------------
|
||||
18 April 2013. Summary of changes for version 20130418:
|
||||
|
||||
This release is available at https://acpica.org/downloads
|
||||
|
||||
|
||||
1) ACPICA kernel-resident subsystem:
|
||||
|
||||
Fixed a possible buffer overrun during some rare but specific field unit
|
||||
|
@ -628,10 +628,12 @@ AdCreateTableHeader (
|
||||
switch (Table->Revision)
|
||||
{
|
||||
case 0:
|
||||
|
||||
AcpiOsPrintf (" **** Invalid Revision");
|
||||
break;
|
||||
|
||||
case 1:
|
||||
|
||||
/* Revision of DSDT controls the ACPI integer width */
|
||||
|
||||
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT))
|
||||
@ -641,6 +643,7 @@ AdCreateTableHeader (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
AcpiOsPrintf ("\n");
|
||||
|
@ -375,14 +375,17 @@ AcpiDmDumpDescending (
|
||||
case AML_BYTE_OP:
|
||||
case AML_WORD_OP:
|
||||
case AML_DWORD_OP:
|
||||
|
||||
AcpiOsPrintf ("%X", (UINT32) Op->Common.Value.Integer);
|
||||
break;
|
||||
|
||||
case AML_QWORD_OP:
|
||||
|
||||
AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
|
||||
break;
|
||||
|
||||
case AML_INT_NAMEPATH_OP:
|
||||
|
||||
if (Op->Common.Value.String)
|
||||
{
|
||||
AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
|
||||
@ -400,10 +403,12 @@ AcpiDmDumpDescending (
|
||||
case AML_METHOD_OP:
|
||||
case AML_DEVICE_OP:
|
||||
case AML_INT_NAMEDFIELD_OP:
|
||||
|
||||
AcpiOsPrintf ("%4.4s", ACPI_CAST_PTR (char, &Op->Named.Name));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -450,6 +455,7 @@ AcpiDmFindOrphanDescending (
|
||||
{
|
||||
#ifdef ACPI_UNDER_DEVELOPMENT
|
||||
case AML_ADD_OP:
|
||||
|
||||
ChildOp = Op->Common.Value.Arg;
|
||||
if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) &&
|
||||
!ChildOp->Common.Node)
|
||||
@ -556,6 +562,7 @@ AcpiDmFindOrphanDescending (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -594,6 +594,7 @@ AcpiDmAddExternalsToNamespace (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -798,7 +798,6 @@ AcpiDmGetResourceTag (
|
||||
case ACPI_RESOURCE_NAME_ADDRESS32:
|
||||
case ACPI_RESOURCE_NAME_ADDRESS64:
|
||||
case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64:
|
||||
|
||||
/*
|
||||
* Subtype differentiation is the flags.
|
||||
* Kindof brute force, but just blindly search for an index match
|
||||
@ -846,6 +845,7 @@ AcpiDmGetResourceTag (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -697,48 +697,71 @@ AcpiDmDumpTable (
|
||||
case ACPI_DMT_EINJINST:
|
||||
case ACPI_DMT_ERSTACT:
|
||||
case ACPI_DMT_ERSTINST:
|
||||
|
||||
ByteLength = 1;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT16:
|
||||
case ACPI_DMT_DMAR:
|
||||
case ACPI_DMT_HEST:
|
||||
|
||||
ByteLength = 2;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT24:
|
||||
|
||||
ByteLength = 3;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT32:
|
||||
case ACPI_DMT_NAME4:
|
||||
case ACPI_DMT_SIG:
|
||||
case ACPI_DMT_SLIC:
|
||||
|
||||
ByteLength = 4;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT40:
|
||||
|
||||
ByteLength = 5;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT48:
|
||||
case ACPI_DMT_NAME6:
|
||||
|
||||
ByteLength = 6;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT56:
|
||||
case ACPI_DMT_BUF7:
|
||||
|
||||
ByteLength = 7;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT64:
|
||||
case ACPI_DMT_NAME8:
|
||||
|
||||
ByteLength = 8;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_BUF16:
|
||||
case ACPI_DMT_UUID:
|
||||
|
||||
ByteLength = 16;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_BUF128:
|
||||
|
||||
ByteLength = 128;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_STRING:
|
||||
|
||||
ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_GAS:
|
||||
|
||||
if (!LastOutputBlankLine)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
@ -746,7 +769,9 @@ AcpiDmDumpTable (
|
||||
}
|
||||
ByteLength = sizeof (ACPI_GENERIC_ADDRESS);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_HESTNTFY:
|
||||
|
||||
if (!LastOutputBlankLine)
|
||||
{
|
||||
AcpiOsPrintf ("\n");
|
||||
@ -754,7 +779,9 @@ AcpiDmDumpTable (
|
||||
}
|
||||
ByteLength = sizeof (ACPI_HEST_NOTIFY);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ByteLength = 0;
|
||||
break;
|
||||
}
|
||||
@ -837,7 +864,6 @@ AcpiDmDumpTable (
|
||||
case ACPI_DMT_BUF7:
|
||||
case ACPI_DMT_BUF16:
|
||||
case ACPI_DMT_BUF128:
|
||||
|
||||
/*
|
||||
* Buffer: Size depends on the opcode and was set above.
|
||||
* Each hex byte is separated with a space.
|
||||
@ -1146,16 +1172,19 @@ AcpiDmDumpTable (
|
||||
switch (Temp8)
|
||||
{
|
||||
case ACPI_IVRS_TYPE_HARDWARE:
|
||||
|
||||
Name = AcpiDmIvrsSubnames[0];
|
||||
break;
|
||||
|
||||
case ACPI_IVRS_TYPE_MEMORY1:
|
||||
case ACPI_IVRS_TYPE_MEMORY2:
|
||||
case ACPI_IVRS_TYPE_MEMORY3:
|
||||
|
||||
Name = AcpiDmIvrsSubnames[1];
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Name = AcpiDmIvrsSubnames[2];
|
||||
break;
|
||||
}
|
||||
@ -1164,9 +1193,11 @@ AcpiDmDumpTable (
|
||||
break;
|
||||
|
||||
case ACPI_DMT_EXIT:
|
||||
|
||||
return (AE_OK);
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"**** Invalid table opcode [0x%X] ****\n", Info->Opcode));
|
||||
return (AE_SUPPORT);
|
||||
|
@ -349,27 +349,33 @@ AcpiDmValidateFadtLength (
|
||||
switch (Revision)
|
||||
{
|
||||
case 0:
|
||||
|
||||
AcpiOsPrintf ("// ACPI Warning: Invalid FADT revision: 0\n");
|
||||
return;
|
||||
|
||||
case 1:
|
||||
|
||||
ExpectedLength = ACPI_FADT_V1_SIZE;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
ExpectedLength = ACPI_FADT_V2_SIZE;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
|
||||
ExpectedLength = ACPI_FADT_V3_SIZE;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
|
||||
ExpectedLength = ACPI_FADT_V5_SIZE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -434,10 +440,12 @@ AcpiDmDumpAsf (
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_ASF_TYPE_INFO:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf0;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_ALERT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf1;
|
||||
DataInfoTable = AcpiDmTableInfoAsf1a;
|
||||
DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ALERT));
|
||||
@ -447,6 +455,7 @@ AcpiDmDumpAsf (
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_CONTROL:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf2;
|
||||
DataInfoTable = AcpiDmTableInfoAsf2a;
|
||||
DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_REMOTE));
|
||||
@ -456,10 +465,12 @@ AcpiDmDumpAsf (
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_BOOT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf3;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_ADDRESS:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf4;
|
||||
DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ADDRESS));
|
||||
DataLength = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, SubTable)->Devices;
|
||||
@ -467,6 +478,7 @@ AcpiDmDumpAsf (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown ASF sub-table type 0x%X\n", SubTable->Header.Type);
|
||||
return;
|
||||
}
|
||||
@ -523,6 +535,7 @@ AcpiDmDumpAsf (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -863,22 +876,31 @@ AcpiDmDumpDmar (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar0;
|
||||
ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT);
|
||||
break;
|
||||
|
||||
case ACPI_DMAR_TYPE_RESERVED_MEMORY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar1;
|
||||
ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY);
|
||||
break;
|
||||
|
||||
case ACPI_DMAR_TYPE_ATSR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar2;
|
||||
ScopeOffset = sizeof (ACPI_DMAR_ATSR);
|
||||
break;
|
||||
|
||||
case ACPI_DMAR_HARDWARE_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar3;
|
||||
ScopeOffset = sizeof (ACPI_DMAR_RHSA);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown DMAR sub-table type 0x%X\n\n", SubTable->Type);
|
||||
return;
|
||||
}
|
||||
@ -1086,12 +1108,17 @@ AcpiDmDumpFpdt (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_FPDT_TYPE_BOOT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoFpdt0;
|
||||
break;
|
||||
|
||||
case ACPI_FPDT_TYPE_S3PERF:
|
||||
|
||||
InfoTable = AcpiDmTableInfoFpdt1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown FPDT sub-table type 0x%X\n\n", SubTable->Type);
|
||||
|
||||
/* Attempt to continue */
|
||||
@ -1164,6 +1191,7 @@ AcpiDmDumpHest (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_HEST_TYPE_IA32_CHECK:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest0;
|
||||
SubTableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK);
|
||||
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK,
|
||||
@ -1171,6 +1199,7 @@ AcpiDmDumpHest (
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest1;
|
||||
SubTableLength = sizeof (ACPI_HEST_IA_CORRECTED);
|
||||
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED,
|
||||
@ -1178,31 +1207,37 @@ AcpiDmDumpHest (
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_IA32_NMI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest2;
|
||||
SubTableLength = sizeof (ACPI_HEST_IA_NMI);
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_AER_ROOT_PORT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest6;
|
||||
SubTableLength = sizeof (ACPI_HEST_AER_ROOT);
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_AER_ENDPOINT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest7;
|
||||
SubTableLength = sizeof (ACPI_HEST_AER);
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_AER_BRIDGE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest8;
|
||||
SubTableLength = sizeof (ACPI_HEST_AER_BRIDGE);
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_GENERIC_ERROR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest9;
|
||||
SubTableLength = sizeof (ACPI_HEST_GENERIC);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Cannot continue on unknown type - no length */
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown HEST sub-table type 0x%X\n", SubTable->Type);
|
||||
@ -1304,14 +1339,19 @@ AcpiDmDumpIvrs (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_IVRS_TYPE_HARDWARE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIvrs0;
|
||||
break;
|
||||
|
||||
case ACPI_IVRS_TYPE_MEMORY1:
|
||||
case ACPI_IVRS_TYPE_MEMORY2:
|
||||
case ACPI_IVRS_TYPE_MEMORY3:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIvrs1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown IVRS sub-table type 0x%X\n",
|
||||
SubTable->Type);
|
||||
|
||||
@ -1473,45 +1513,72 @@ AcpiDmDumpMadt (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_MADT_TYPE_LOCAL_APIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt0;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_IO_APIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt1;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt2;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_NMI_SOURCE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt3;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt4;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt5;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_IO_SAPIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt6;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_SAPIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt7;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_INTERRUPT_SOURCE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt8;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_X2APIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt9;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt10;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt11;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt12;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type);
|
||||
|
||||
/* Attempt to continue */
|
||||
@ -2152,12 +2219,17 @@ AcpiDmDumpS3pt (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_S3PT_TYPE_RESUME:
|
||||
|
||||
InfoTable = AcpiDmTableInfoS3pt0;
|
||||
break;
|
||||
|
||||
case ACPI_S3PT_TYPE_SUSPEND:
|
||||
|
||||
InfoTable = AcpiDmTableInfoS3pt1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown S3PT sub-table type 0x%X\n", SubTable->Type);
|
||||
|
||||
/* Attempt to continue */
|
||||
@ -2229,12 +2301,17 @@ AcpiDmDumpSlic (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_SLIC_TYPE_PUBLIC_KEY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSlic0;
|
||||
break;
|
||||
|
||||
case ACPI_SLIC_TYPE_WINDOWS_MARKER:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSlic1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("\n**** Unknown SLIC sub-table type 0x%X\n", SubTable->Type);
|
||||
|
||||
/* Attempt to continue */
|
||||
@ -2390,14 +2467,20 @@ AcpiDmDumpSrat (
|
||||
switch (SubTable->Type)
|
||||
{
|
||||
case ACPI_SRAT_TYPE_CPU_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSrat0;
|
||||
break;
|
||||
|
||||
case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSrat1;
|
||||
break;
|
||||
|
||||
case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSrat2;
|
||||
break;
|
||||
|
||||
default:
|
||||
AcpiOsPrintf ("\n**** Unknown SRAT sub-table type 0x%X\n", SubTable->Type);
|
||||
|
||||
|
@ -41,6 +41,15 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ACPICA getopt() implementation
|
||||
*
|
||||
* Option strings:
|
||||
* "f" - Option has no arguments
|
||||
* "f:" - Option requires an argument
|
||||
* "f^" - Option has optional single-char sub-options
|
||||
* "f|" - Option has required single-char sub-options
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@ -52,9 +61,59 @@
|
||||
if (AcpiGbl_Opterr) {fprintf (stderr, "%s%c\n", msg, badchar);}
|
||||
|
||||
|
||||
int AcpiGbl_Opterr = 1;
|
||||
int AcpiGbl_Optind = 1;
|
||||
char *AcpiGbl_Optarg;
|
||||
int AcpiGbl_Opterr = 1;
|
||||
int AcpiGbl_Optind = 1;
|
||||
int AcpiGbl_SubOptChar = 0;
|
||||
char *AcpiGbl_Optarg;
|
||||
|
||||
static int CurrentCharPtr = 1;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AcpiGetoptArgument
|
||||
*
|
||||
* PARAMETERS: argc, argv - from main
|
||||
*
|
||||
* RETURN: 0 if an argument was found, -1 otherwise. Sets AcpiGbl_Optarg
|
||||
* to point to the next argument.
|
||||
*
|
||||
* DESCRIPTION: Get the next argument. Used to obtain arguments for the
|
||||
* two-character options after the original call to AcpiGetopt.
|
||||
* Note: Either the argument starts at the next character after
|
||||
* the option, or it is pointed to by the next argv entry.
|
||||
* (After call to AcpiGetopt, we need to backup to the previous
|
||||
* argv entry).
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
int
|
||||
AcpiGetoptArgument (
|
||||
int argc,
|
||||
char **argv)
|
||||
{
|
||||
AcpiGbl_Optind--;
|
||||
CurrentCharPtr++;
|
||||
|
||||
if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0')
|
||||
{
|
||||
AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)];
|
||||
}
|
||||
else if (++AcpiGbl_Optind >= argc)
|
||||
{
|
||||
ACPI_OPTION_ERROR ("Option requires an argument: -", 'v');
|
||||
|
||||
CurrentCharPtr = 1;
|
||||
return (-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiGbl_Optarg = argv[AcpiGbl_Optind++];
|
||||
}
|
||||
|
||||
CurrentCharPtr = 1;
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -76,7 +135,6 @@ AcpiGetopt(
|
||||
char **argv,
|
||||
char *opts)
|
||||
{
|
||||
static int CurrentCharPtr = 1;
|
||||
int CurrentChar;
|
||||
char *OptsPtr;
|
||||
|
||||
@ -152,6 +210,7 @@ AcpiGetopt(
|
||||
AcpiGbl_Optarg = "^";
|
||||
}
|
||||
|
||||
AcpiGbl_SubOptChar = AcpiGbl_Optarg[0];
|
||||
AcpiGbl_Optind++;
|
||||
CurrentCharPtr = 1;
|
||||
}
|
||||
@ -172,6 +231,7 @@ AcpiGetopt(
|
||||
return ('?');
|
||||
}
|
||||
|
||||
AcpiGbl_SubOptChar = AcpiGbl_Optarg[0];
|
||||
AcpiGbl_Optind++;
|
||||
CurrentCharPtr = 1;
|
||||
}
|
||||
|
@ -381,6 +381,7 @@ AnIsResultUsed (
|
||||
return (TRUE);
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -411,6 +412,7 @@ AnIsResultUsed (
|
||||
return (FALSE);
|
||||
|
||||
default:
|
||||
|
||||
/* Any other type of parent means that the result is used */
|
||||
|
||||
return (TRUE);
|
||||
|
@ -83,15 +83,19 @@ AnMapArgTypeToBtype (
|
||||
/* Simple types */
|
||||
|
||||
case ARGI_ANYTYPE:
|
||||
|
||||
return (ACPI_BTYPE_OBJECTS_AND_REFS);
|
||||
|
||||
case ARGI_PACKAGE:
|
||||
|
||||
return (ACPI_BTYPE_PACKAGE);
|
||||
|
||||
case ARGI_EVENT:
|
||||
|
||||
return (ACPI_BTYPE_EVENT);
|
||||
|
||||
case ARGI_MUTEX:
|
||||
|
||||
return (ACPI_BTYPE_MUTEX);
|
||||
|
||||
case ARGI_DDBHANDLE:
|
||||
@ -111,31 +115,36 @@ AnMapArgTypeToBtype (
|
||||
case ARGI_BUFFER:
|
||||
case ARGI_BUFFER_OR_STRING:
|
||||
case ARGI_COMPUTEDATA:
|
||||
|
||||
return (ACPI_BTYPE_COMPUTE_DATA);
|
||||
|
||||
/* References */
|
||||
|
||||
case ARGI_INTEGER_REF:
|
||||
|
||||
return (ACPI_BTYPE_INTEGER);
|
||||
|
||||
case ARGI_OBJECT_REF:
|
||||
|
||||
return (ACPI_BTYPE_ALL_OBJECTS);
|
||||
|
||||
case ARGI_DEVICE_REF:
|
||||
|
||||
return (ACPI_BTYPE_DEVICE_OBJECTS);
|
||||
|
||||
case ARGI_REFERENCE:
|
||||
|
||||
return (ACPI_BTYPE_REFERENCE);
|
||||
|
||||
case ARGI_TARGETREF:
|
||||
case ARGI_FIXED_TARGET:
|
||||
case ARGI_SIMPLE_TARGET:
|
||||
|
||||
return (ACPI_BTYPE_OBJECTS_AND_REFS);
|
||||
|
||||
/* Complex types */
|
||||
|
||||
case ARGI_DATAOBJECT:
|
||||
|
||||
/*
|
||||
* Buffer, string, package or reference to a Op -
|
||||
* Used only by SizeOf operator
|
||||
@ -150,6 +159,7 @@ AnMapArgTypeToBtype (
|
||||
return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE);
|
||||
|
||||
case ARGI_REF_OR_STRING:
|
||||
|
||||
return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE);
|
||||
|
||||
case ARGI_REGION_OR_BUFFER:
|
||||
@ -159,10 +169,12 @@ AnMapArgTypeToBtype (
|
||||
return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | ACPI_BTYPE_FIELD_UNIT);
|
||||
|
||||
case ARGI_DATAREFOBJ:
|
||||
|
||||
return (ACPI_BTYPE_INTEGER |ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER |
|
||||
ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE);
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -207,22 +219,28 @@ AnMapEtypeToBtype (
|
||||
switch (Etype)
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE);
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
return (ACPI_BTYPE_COMPUTE_DATA);
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
return (ACPI_BTYPE_PACKAGE);
|
||||
|
||||
case ACPI_TYPE_FIELD_UNIT:
|
||||
|
||||
return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT);
|
||||
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
|
||||
return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD);
|
||||
|
||||
case ACPI_TYPE_DDB_HANDLE:
|
||||
|
||||
return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE);
|
||||
|
||||
case ACPI_BTYPE_DEBUG_OBJECT:
|
||||
@ -232,6 +250,7 @@ AnMapEtypeToBtype (
|
||||
return (0);
|
||||
|
||||
default:
|
||||
|
||||
return (1 << (Etype - 1));
|
||||
}
|
||||
}
|
||||
@ -259,6 +278,7 @@ AnMapEtypeToBtype (
|
||||
return (ACPI_BTYPE_REFERENCE);
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unhandled encoded type: %X\n", Etype);
|
||||
return (0);
|
||||
}
|
||||
@ -438,51 +458,67 @@ AnMapObjTypeToBtype (
|
||||
switch (Op->Asl.ParseOpcode)
|
||||
{
|
||||
case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */
|
||||
|
||||
return (ACPI_BTYPE_BUFFER_FIELD);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */
|
||||
|
||||
return (ACPI_BTYPE_BUFFER);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */
|
||||
|
||||
return (ACPI_BTYPE_DDB_HANDLE);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */
|
||||
|
||||
return (ACPI_BTYPE_DEVICE);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */
|
||||
|
||||
return (ACPI_BTYPE_EVENT);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */
|
||||
|
||||
return (ACPI_BTYPE_FIELD_UNIT);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */
|
||||
|
||||
return (ACPI_BTYPE_INTEGER);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */
|
||||
|
||||
return (ACPI_BTYPE_METHOD);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */
|
||||
|
||||
return (ACPI_BTYPE_MUTEX);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */
|
||||
|
||||
return (ACPI_BTYPE_REGION);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */
|
||||
|
||||
return (ACPI_BTYPE_PACKAGE);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */
|
||||
|
||||
return (ACPI_BTYPE_POWER);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */
|
||||
|
||||
return (ACPI_BTYPE_STRING);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */
|
||||
|
||||
return (ACPI_BTYPE_THERMAL);
|
||||
|
||||
case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */
|
||||
|
||||
return (ACPI_BTYPE_OBJECTS_AND_REFS);
|
||||
|
||||
default:
|
||||
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
@ -284,6 +284,7 @@ CgWriteAmlOpcode (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Aml.Opcode = Op->Asl.AmlOpcode;
|
||||
break;
|
||||
}
|
||||
@ -382,7 +383,9 @@ CgWriteAmlOpcode (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* All data opcodes must appear above */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -560,7 +563,9 @@ CgWriteNode (
|
||||
return;
|
||||
|
||||
default:
|
||||
|
||||
/* Internal data opcodes must all appear above */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,9 @@ AslCompilerSignon (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No other output types supported */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -207,7 +209,9 @@ AslCompilerFileHeader (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No other output types supported */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -226,11 +230,14 @@ AslCompilerFileHeader (
|
||||
case ASL_FILE_C_SOURCE_OUTPUT:
|
||||
case ASL_FILE_C_OFFSET_OUTPUT:
|
||||
case ASL_FILE_C_INCLUDE_OUTPUT:
|
||||
|
||||
FlPrintFile (FileId, " */\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for other output types */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -291,6 +291,15 @@ AslError (
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
char *ExtraMessage);
|
||||
|
||||
ACPI_STATUS
|
||||
AslDisableException (
|
||||
char *MessageIdString);
|
||||
|
||||
BOOLEAN
|
||||
AslIsExceptionDisabled (
|
||||
UINT8 Level,
|
||||
UINT8 MessageId);
|
||||
|
||||
void
|
||||
AslCoreSubsystemError (
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
@ -791,6 +800,17 @@ void
|
||||
LkFindUnreferencedObjects (
|
||||
void);
|
||||
|
||||
/*
|
||||
* aslmain - startup
|
||||
*/
|
||||
void
|
||||
Usage (
|
||||
void);
|
||||
|
||||
void
|
||||
AslFilenameHelp (
|
||||
void);
|
||||
|
||||
|
||||
/*
|
||||
* aslnamesp - namespace output file generation
|
||||
@ -803,6 +823,13 @@ void
|
||||
NsSetupNamespaceListing (
|
||||
void *Handle);
|
||||
|
||||
/*
|
||||
* asloptions - command line processing
|
||||
*/
|
||||
int
|
||||
AslCommandLine (
|
||||
int argc,
|
||||
char **argv);
|
||||
|
||||
/*
|
||||
* aslxref - namespace cross reference
|
||||
|
@ -201,6 +201,7 @@ AePrintException (
|
||||
switch (Enode->Level)
|
||||
{
|
||||
case ASL_REMARK:
|
||||
|
||||
if (!Gbl_DisplayRemarks)
|
||||
{
|
||||
return;
|
||||
@ -208,6 +209,7 @@ AePrintException (
|
||||
break;
|
||||
|
||||
case ASL_OPTIMIZATION:
|
||||
|
||||
if (!Gbl_DisplayOptimizations)
|
||||
{
|
||||
return;
|
||||
@ -215,6 +217,7 @@ AePrintException (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -674,6 +677,113 @@ AslCommonError (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslDisableException
|
||||
*
|
||||
* PARAMETERS: MessageIdString - ID to be disabled
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Enter a message ID into the global disabled messages table
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ACPI_STATUS
|
||||
AslDisableException (
|
||||
char *MessageIdString)
|
||||
{
|
||||
UINT32 MessageId;
|
||||
|
||||
|
||||
/* Convert argument to an integer and validate it */
|
||||
|
||||
MessageId = (UINT32) strtoul (MessageIdString, NULL, 0);
|
||||
|
||||
if ((MessageId < 2000) || (MessageId > 5999))
|
||||
{
|
||||
printf ("\"%s\" is not a valid warning/remark ID\n",
|
||||
MessageIdString);
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Insert value into the global disabled message array */
|
||||
|
||||
if (Gbl_DisabledMessagesIndex >= ASL_MAX_DISABLED_MESSAGES)
|
||||
{
|
||||
printf ("Too many messages have been disabled (max %u)\n",
|
||||
ASL_MAX_DISABLED_MESSAGES);
|
||||
return (AE_LIMIT);
|
||||
}
|
||||
|
||||
Gbl_DisabledMessages[Gbl_DisabledMessagesIndex] = MessageId;
|
||||
Gbl_DisabledMessagesIndex++;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslIsExceptionDisabled
|
||||
*
|
||||
* PARAMETERS: Level - Seriousness (Warning/error, etc.)
|
||||
* MessageId - Index into global message buffer
|
||||
*
|
||||
* RETURN: TRUE if exception/message should be ignored
|
||||
*
|
||||
* DESCRIPTION: Check if the user has specified options such that this
|
||||
* exception should be ignored
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
BOOLEAN
|
||||
AslIsExceptionDisabled (
|
||||
UINT8 Level,
|
||||
UINT8 MessageId)
|
||||
{
|
||||
UINT32 EncodedMessageId;
|
||||
UINT32 i;
|
||||
|
||||
|
||||
switch (Level)
|
||||
{
|
||||
case ASL_WARNING2:
|
||||
case ASL_WARNING3:
|
||||
|
||||
/* Check for global disable via -w1/-w2/-w3 options */
|
||||
|
||||
if (Level > Gbl_WarningLevel)
|
||||
{
|
||||
return (TRUE);
|
||||
}
|
||||
/* Fall through */
|
||||
|
||||
case ASL_WARNING:
|
||||
case ASL_REMARK:
|
||||
/*
|
||||
* Ignore this warning/remark if it has been disabled by
|
||||
* the user (-vw option)
|
||||
*/
|
||||
EncodedMessageId = MessageId + ((Level + 1) * 1000);
|
||||
for (i = 0; i < Gbl_DisabledMessagesIndex; i++)
|
||||
{
|
||||
/* Simple implementation via fixed array */
|
||||
|
||||
if (EncodedMessageId == Gbl_DisabledMessages[i])
|
||||
{
|
||||
return (TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslError
|
||||
@ -698,32 +808,25 @@ AslError (
|
||||
char *ExtraMessage)
|
||||
{
|
||||
|
||||
switch (Level)
|
||||
{
|
||||
case ASL_WARNING2:
|
||||
case ASL_WARNING3:
|
||||
if (Gbl_WarningLevel < Level)
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
/* Check if user wants to ignore this exception */
|
||||
|
||||
default:
|
||||
break;
|
||||
if (AslIsExceptionDisabled (Level, MessageId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Op)
|
||||
{
|
||||
AslCommonError (Level, MessageId, Op->Asl.LineNumber,
|
||||
Op->Asl.LogicalLineNumber,
|
||||
Op->Asl.LogicalByteOffset,
|
||||
Op->Asl.Column,
|
||||
Op->Asl.Filename, ExtraMessage);
|
||||
Op->Asl.LogicalLineNumber,
|
||||
Op->Asl.LogicalByteOffset,
|
||||
Op->Asl.Column,
|
||||
Op->Asl.Filename, ExtraMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
AslCommonError (Level, MessageId, 0,
|
||||
0, 0, 0, NULL, ExtraMessage);
|
||||
0, 0, 0, NULL, ExtraMessage);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -441,7 +441,6 @@ OpcAmlConstantWalk (
|
||||
ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
Op->Asl.ParseOpcode = PARSEOP_STRING_LITERAL;
|
||||
@ -455,7 +454,6 @@ OpcAmlConstantWalk (
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
Op->Asl.ParseOpcode = PARSEOP_BUFFER;
|
||||
@ -493,8 +491,8 @@ OpcAmlConstantWalk (
|
||||
ObjDesc->Buffer.Length);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unsupported return type: %s\n",
|
||||
AcpiUtGetObjectTypeName (ObjDesc));
|
||||
break;
|
||||
@ -536,27 +534,32 @@ OpcUpdateIntegerNode (
|
||||
switch (Op->Asl.AmlLength)
|
||||
{
|
||||
case 1:
|
||||
|
||||
TrUpdateNode (PARSEOP_BYTECONST, Op);
|
||||
Op->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
TrUpdateNode (PARSEOP_WORDCONST, Op);
|
||||
Op->Asl.AmlOpcode = AML_RAW_DATA_WORD;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
|
||||
TrUpdateNode (PARSEOP_DWORDCONST, Op);
|
||||
Op->Asl.AmlOpcode = AML_RAW_DATA_DWORD;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
|
||||
TrUpdateNode (PARSEOP_QWORDCONST, Op);
|
||||
Op->Asl.AmlOpcode = AML_RAW_DATA_QWORD;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
default:
|
||||
|
||||
OpcSetOptimalIntegerSize (Op);
|
||||
TrUpdateNode (PARSEOP_INTEGER, Op);
|
||||
break;
|
||||
|
@ -110,6 +110,7 @@ extern char *AslCompilertext;
|
||||
|
||||
#define ASL_DEFAULT_LINE_BUFFER_SIZE (1024 * 32) /* 32K */
|
||||
#define ASL_MSG_BUFFER_SIZE 4096
|
||||
#define ASL_MAX_DISABLED_MESSAGES 32
|
||||
#define HEX_TABLE_LINE_SIZE 8
|
||||
#define HEX_LISTING_LINE_SIZE 8
|
||||
|
||||
@ -224,6 +225,7 @@ ASL_EXTERN char *Gbl_TemplateSignature;
|
||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentHexColumn, 0);
|
||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentAmlOffset, 0);
|
||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLine, 0);
|
||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_DisabledMessagesIndex, 0);
|
||||
ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_HexBytesWereWritten, FALSE);
|
||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_NumNamespaceObjects, 0);
|
||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_ReservedMethods, 0);
|
||||
@ -250,6 +252,7 @@ ASL_EXTERN UINT8 Gbl_AmlBuffer[HEX_LISTING_LINE_SIZE];
|
||||
ASL_EXTERN char MsgBuffer[ASL_MSG_BUFFER_SIZE];
|
||||
ASL_EXTERN char StringBuffer[ASL_MSG_BUFFER_SIZE];
|
||||
ASL_EXTERN char StringBuffer2[ASL_MSG_BUFFER_SIZE];
|
||||
ASL_EXTERN UINT32 Gbl_DisabledMessages[ASL_MAX_DISABLED_MESSAGES];
|
||||
|
||||
|
||||
#endif /* __ASLGLOBAL_H */
|
||||
|
@ -107,7 +107,9 @@ HxDoHexOutput (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No other output types supported */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -258,6 +258,7 @@ CgGenerateAmlOpcodeLength (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* All data opcodes must be above */
|
||||
break;
|
||||
}
|
||||
@ -326,6 +327,7 @@ CgGenerateAmlLengths (
|
||||
return;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -157,6 +157,8 @@ LsGenerateListing (
|
||||
|
||||
if (FileId == ASL_FILE_C_OFFSET_OUTPUT)
|
||||
{
|
||||
Gbl_CurrentAmlOffset = 0;
|
||||
|
||||
/* Offset table file has a special header and footer */
|
||||
|
||||
LsDoOffsetTableHeader (FileId);
|
||||
@ -265,9 +267,10 @@ LsTreeWriteWalk (
|
||||
|
||||
DbgPrint (ASL_TREE_OUTPUT,
|
||||
"%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level);
|
||||
|
||||
UtPrintFormattedName (Op->Asl.ParseOpcode, Level);
|
||||
|
||||
DbgPrint (ASL_TREE_OUTPUT, "\n");
|
||||
DbgPrint (ASL_TREE_OUTPUT, " (%.4X)\n", Op->Asl.ParseOpcode);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
@ -319,16 +322,20 @@ LsWriteNodeToListing (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
switch (OpClass)
|
||||
{
|
||||
case AML_CLASS_NAMED_OBJECT:
|
||||
|
||||
switch (Op->Asl.AmlOpcode)
|
||||
{
|
||||
case AML_SCOPE_OP:
|
||||
case AML_ALIAS_OP:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
if (Op->Asl.ExternalName)
|
||||
{
|
||||
LsFlushListingBuffer (FileId);
|
||||
@ -339,7 +346,9 @@ LsWriteNodeToListing (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Don't care about other objects */
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -427,7 +436,9 @@ LsWriteNodeToListing (
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* All other opcodes have an AML opcode */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -443,7 +454,6 @@ LsWriteNodeToListing (
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case AML_CLASS_NAMED_OBJECT:
|
||||
|
||||
switch (Op->Asl.AmlOpcode)
|
||||
@ -451,7 +461,6 @@ LsWriteNodeToListing (
|
||||
case AML_FIELD_OP:
|
||||
case AML_INDEX_FIELD_OP:
|
||||
case AML_BANK_FIELD_OP:
|
||||
|
||||
/*
|
||||
* For fields, we want to dump all the AML after the
|
||||
* entire definition
|
||||
@ -479,6 +488,7 @@ LsWriteNodeToListing (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber,
|
||||
FileId);
|
||||
break;
|
||||
@ -503,7 +513,6 @@ LsWriteNodeToListing (
|
||||
case ASL_FILE_C_SOURCE_OUTPUT:
|
||||
case ASL_FILE_ASM_INCLUDE_OUTPUT:
|
||||
case ASL_FILE_C_INCLUDE_OUTPUT:
|
||||
|
||||
/*
|
||||
* For named objects, we will create a valid symbol so that the
|
||||
* AML code can be referenced from C or ASM
|
||||
@ -558,7 +567,9 @@ LsWriteNodeToListing (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for listing file */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -579,6 +590,7 @@ LsWriteNodeToListing (
|
||||
break;
|
||||
|
||||
case AML_CLASS_UNKNOWN:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -251,7 +251,9 @@ LsWriteListingHexBytes (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No other types supported */
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -617,7 +619,9 @@ LsFlushListingBuffer (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No other types supported */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -177,7 +177,9 @@ LdLoadFieldElements (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No other opcodes should arrive here */
|
||||
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
@ -374,6 +376,7 @@ LdNamespace1Begin (
|
||||
default:
|
||||
|
||||
/* All other opcodes go below */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -422,7 +425,6 @@ LdNamespace1Begin (
|
||||
|
||||
|
||||
case PARSEOP_EXTERNAL:
|
||||
|
||||
/*
|
||||
* "External" simply enters a name and type into the namespace.
|
||||
* We must be careful to not open a new scope, however, no matter
|
||||
@ -466,7 +468,6 @@ LdNamespace1Begin (
|
||||
|
||||
|
||||
case PARSEOP_SCOPE:
|
||||
|
||||
/*
|
||||
* The name referenced by Scope(Name) must already exist at this point.
|
||||
* In other words, forward references for Scope() are not supported.
|
||||
@ -521,7 +522,6 @@ LdNamespace1Begin (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
case ACPI_TYPE_STRING:
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
/*
|
||||
* These types we will allow, but we will change the type.
|
||||
* This enables some existing code of the form:
|
||||
|
@ -144,9 +144,11 @@ LkIsObjectUsed (
|
||||
case ACPI_TYPE_PROCESSOR:
|
||||
case ACPI_TYPE_POWER:
|
||||
case ACPI_TYPE_LOCAL_RESOURCE:
|
||||
|
||||
return (AE_OK);
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,6 @@
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
|
||||
#define _DECLARE_GLOBALS
|
||||
|
||||
#include <contrib/dev/acpica/compiler/aslcompiler.h>
|
||||
@ -49,27 +48,12 @@
|
||||
#include <contrib/dev/acpica/include/acdisasm.h>
|
||||
#include <signal.h>
|
||||
|
||||
#ifdef _DEBUG
|
||||
#include <crtdbg.h>
|
||||
#endif
|
||||
|
||||
#define _COMPONENT ACPI_COMPILER
|
||||
ACPI_MODULE_NAME ("aslmain")
|
||||
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
static void
|
||||
Options (
|
||||
void);
|
||||
|
||||
static void
|
||||
FilenameHelp (
|
||||
void);
|
||||
|
||||
static void
|
||||
Usage (
|
||||
void);
|
||||
|
||||
static void ACPI_SYSTEM_XFACE
|
||||
AslSignalHandler (
|
||||
int Sig);
|
||||
@ -78,34 +62,10 @@ static void
|
||||
AslInitialize (
|
||||
void);
|
||||
|
||||
static int
|
||||
AslCommandLine (
|
||||
int argc,
|
||||
char **argv);
|
||||
|
||||
static int
|
||||
AslDoOptions (
|
||||
int argc,
|
||||
char **argv,
|
||||
BOOLEAN IsResponseFile);
|
||||
|
||||
static void
|
||||
AslMergeOptionTokens (
|
||||
char *InBuffer,
|
||||
char *OutBuffer);
|
||||
|
||||
static int
|
||||
AslDoResponseFile (
|
||||
char *Filename);
|
||||
|
||||
|
||||
#define ASL_TOKEN_SEPARATORS " \t\n"
|
||||
#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: Options
|
||||
* FUNCTION: Usage
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
@ -116,10 +76,12 @@ AslDoResponseFile (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
Options (
|
||||
void
|
||||
Usage (
|
||||
void)
|
||||
{
|
||||
printf ("%s\n\n", ASL_COMPLIANCE);
|
||||
ACPI_USAGE_HEADER ("iasl [Options] [Files]");
|
||||
|
||||
printf ("\nGlobal:\n");
|
||||
ACPI_OPTION ("-@ <file>", "Specify command file");
|
||||
@ -140,6 +102,7 @@ Options (
|
||||
ACPI_OPTION ("-vo", "Enable optimization comments");
|
||||
ACPI_OPTION ("-vr", "Disable remarks");
|
||||
ACPI_OPTION ("-vs", "Disable signon");
|
||||
ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
|
||||
ACPI_OPTION ("-w1 -w2 -w3", "Set warning reporting level");
|
||||
ACPI_OPTION ("-we", "Report warnings as errors");
|
||||
|
||||
@ -209,8 +172,8 @@ Options (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
FilenameHelp (
|
||||
void
|
||||
AslFilenameHelp (
|
||||
void)
|
||||
{
|
||||
|
||||
@ -225,29 +188,6 @@ FilenameHelp (
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: Usage
|
||||
*
|
||||
* PARAMETERS: None
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Display usage and option message
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
Usage (
|
||||
void)
|
||||
{
|
||||
|
||||
printf ("%s\n\n", ASL_COMPLIANCE);
|
||||
ACPI_USAGE_HEADER ("iasl [Options] [Files]");
|
||||
Options ();
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslSignalHandler
|
||||
@ -310,11 +250,6 @@ AslInitialize (
|
||||
UINT32 i;
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
_CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(0));
|
||||
#endif
|
||||
|
||||
|
||||
for (i = 0; i < ASL_NUM_FILES; i++)
|
||||
{
|
||||
Gbl_Files[i].Handle = NULL;
|
||||
@ -326,675 +261,6 @@ AslInitialize (
|
||||
|
||||
Gbl_Files[ASL_FILE_STDERR].Handle = stderr;
|
||||
Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR";
|
||||
|
||||
/* Allocate the line buffer(s) */
|
||||
|
||||
Gbl_LineBufferSize /= 2;
|
||||
UtExpandLineBuffers ();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslMergeOptionTokens
|
||||
*
|
||||
* PARAMETERS: InBuffer - Input containing an option string
|
||||
* OutBuffer - Merged output buffer
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Remove all whitespace from an option string.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
AslMergeOptionTokens (
|
||||
char *InBuffer,
|
||||
char *OutBuffer)
|
||||
{
|
||||
char *Token;
|
||||
|
||||
|
||||
*OutBuffer = 0;
|
||||
|
||||
Token = strtok (InBuffer, ASL_TOKEN_SEPARATORS);
|
||||
while (Token)
|
||||
{
|
||||
strcat (OutBuffer, Token);
|
||||
Token = strtok (NULL, ASL_TOKEN_SEPARATORS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslDoResponseFile
|
||||
*
|
||||
* PARAMETERS: Filename - Name of the response file
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Open a response file and process all options within.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static int
|
||||
AslDoResponseFile (
|
||||
char *Filename)
|
||||
{
|
||||
char *argv = StringBuffer2;
|
||||
FILE *ResponseFile;
|
||||
int OptStatus = 0;
|
||||
int Opterr;
|
||||
int Optind;
|
||||
|
||||
|
||||
ResponseFile = fopen (Filename, "r");
|
||||
if (!ResponseFile)
|
||||
{
|
||||
printf ("Could not open command file %s, %s\n",
|
||||
Filename, strerror (errno));
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Must save the current GetOpt globals */
|
||||
|
||||
Opterr = AcpiGbl_Opterr;
|
||||
Optind = AcpiGbl_Optind;
|
||||
|
||||
/*
|
||||
* Process all lines in the response file. There must be one complete
|
||||
* option per line
|
||||
*/
|
||||
while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile))
|
||||
{
|
||||
/* Compress all tokens, allowing us to use a single argv entry */
|
||||
|
||||
AslMergeOptionTokens (StringBuffer, StringBuffer2);
|
||||
|
||||
/* Process the option */
|
||||
|
||||
AcpiGbl_Opterr = 0;
|
||||
AcpiGbl_Optind = 0;
|
||||
|
||||
OptStatus = AslDoOptions (1, &argv, TRUE);
|
||||
if (OptStatus)
|
||||
{
|
||||
printf ("Invalid option in command file %s: %s\n",
|
||||
Filename, StringBuffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Restore the GetOpt globals */
|
||||
|
||||
AcpiGbl_Opterr = Opterr;
|
||||
AcpiGbl_Optind = Optind;
|
||||
|
||||
fclose (ResponseFile);
|
||||
return (OptStatus);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslDoOptions
|
||||
*
|
||||
* PARAMETERS: argc/argv - Standard argc/argv
|
||||
* IsResponseFile - TRUE if executing a response file.
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Command line option processing
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static int
|
||||
AslDoOptions (
|
||||
int argc,
|
||||
char **argv,
|
||||
BOOLEAN IsResponseFile)
|
||||
{
|
||||
int j;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Get the command line options */
|
||||
|
||||
while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j)
|
||||
{
|
||||
case '@': /* Begin a response file */
|
||||
|
||||
if (IsResponseFile)
|
||||
{
|
||||
printf ("Nested command files are not supported\n");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (AslDoResponseFile (AcpiGbl_Optarg))
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'b': /* Debug output options */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'f':
|
||||
AslCompilerdebug = 1; /* same as yydebug */
|
||||
DtParserdebug = 1;
|
||||
PrParserdebug = 1;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -b%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Produce debug output file */
|
||||
|
||||
Gbl_DebugFlag = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case 'c':
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'r':
|
||||
Gbl_NoResourceChecking = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'd': /* Disassembler */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
Gbl_DoCompile = FALSE;
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
Gbl_DoCompile = FALSE;
|
||||
Gbl_DisassembleAll = TRUE;
|
||||
break;
|
||||
|
||||
case 'b': /* Do not convert buffers to resource descriptors */
|
||||
AcpiGbl_NoResourceDisassembly = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
Gbl_DisasmFlag = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case 'D': /* Define a symbol */
|
||||
PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
|
||||
break;
|
||||
|
||||
|
||||
case 'e': /* External files for disassembler */
|
||||
Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
printf ("Could not add %s to external list\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'f': /* Ignore errors and force creation of aml file */
|
||||
Gbl_IgnoreErrors = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case 'G':
|
||||
Gbl_CompileGeneric = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case 'g': /* Get all ACPI tables */
|
||||
|
||||
Gbl_GetAllTables = TRUE;
|
||||
Gbl_DoCompile = FALSE;
|
||||
break;
|
||||
|
||||
|
||||
case 'h':
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
Usage ();
|
||||
exit (0);
|
||||
|
||||
case 'c':
|
||||
UtDisplayConstantOpcodes ();
|
||||
exit (0);
|
||||
|
||||
case 'f':
|
||||
FilenameHelp ();
|
||||
exit (0);
|
||||
|
||||
case 'r':
|
||||
/* reserved names */
|
||||
|
||||
ApDisplayReservedNames ();
|
||||
exit (0);
|
||||
|
||||
case 't':
|
||||
UtDisplaySupportedTables ();
|
||||
exit (0);
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -h%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
|
||||
case 'I': /* Add an include file search directory */
|
||||
FlAddIncludeDirectory (AcpiGbl_Optarg);
|
||||
break;
|
||||
|
||||
|
||||
case 'i': /* Output AML as an include file */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
/* Produce assembly code include file */
|
||||
|
||||
Gbl_AsmIncludeOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
/* Produce C include file */
|
||||
|
||||
Gbl_C_IncludeOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
|
||||
/* Compiler/Disassembler: Ignore the NOOP operator */
|
||||
|
||||
AcpiGbl_IgnoreNoopOperator = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'l': /* Listing files */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
/* Produce listing file (Mixed source/aml) */
|
||||
|
||||
Gbl_ListingFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
/* Produce preprocessor output file */
|
||||
|
||||
Gbl_PreprocessorOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
/* Produce namespace file */
|
||||
|
||||
Gbl_NsOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
/* Produce combined source file */
|
||||
|
||||
Gbl_SourceOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -l%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'm': /* Set line buffer size */
|
||||
Gbl_LineBufferSize = (UINT32) strtoul (AcpiGbl_Optarg, NULL, 0) * 1024;
|
||||
if (Gbl_LineBufferSize < ASL_DEFAULT_LINE_BUFFER_SIZE)
|
||||
{
|
||||
Gbl_LineBufferSize = ASL_DEFAULT_LINE_BUFFER_SIZE;
|
||||
}
|
||||
printf ("Line Buffer Size: %u\n", Gbl_LineBufferSize);
|
||||
break;
|
||||
|
||||
|
||||
case 'n': /* Parse only */
|
||||
Gbl_ParseOnlyFlag = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case 'o': /* Control compiler AML optimizations */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
/* Disable all optimizations */
|
||||
|
||||
Gbl_FoldConstants = FALSE;
|
||||
Gbl_IntegerOptimizationFlag = FALSE;
|
||||
Gbl_ReferenceOptimizationFlag = FALSE;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
|
||||
/* Disable folding on "normal" expressions */
|
||||
|
||||
Gbl_FoldConstants = FALSE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
|
||||
/* Disable integer optimization to constants */
|
||||
|
||||
Gbl_IntegerOptimizationFlag = FALSE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
|
||||
/* Disable named reference optimization */
|
||||
|
||||
Gbl_ReferenceOptimizationFlag = FALSE;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
||||
/* Display compile time(s) */
|
||||
|
||||
Gbl_CompileTimesFlag = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'P': /* Preprocessor options */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^': /* Proprocess only, emit (.i) file */
|
||||
Gbl_PreprocessOnly = TRUE;
|
||||
Gbl_PreprocessorOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'n': /* Disable preprocessor */
|
||||
Gbl_PreprocessFlag = FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'p': /* Override default AML output filename */
|
||||
Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
|
||||
Gbl_UseDefaultAmlFilename = FALSE;
|
||||
break;
|
||||
|
||||
|
||||
case 'r': /* Override revision found in table header */
|
||||
Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
|
||||
break;
|
||||
|
||||
|
||||
case 's': /* Create AML in a source code file */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
/* Produce assembly code output file */
|
||||
|
||||
Gbl_AsmOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
/* Produce C hex output file */
|
||||
|
||||
Gbl_C_OutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
|
||||
/* Produce AML offset table in C */
|
||||
|
||||
Gbl_C_OffsetTableFlag = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 't': /* Produce hex table output file */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
Gbl_HexOutputFlag = HEX_OUTPUT_ASM;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
Gbl_HexOutputFlag = HEX_OUTPUT_C;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
Gbl_HexOutputFlag = HEX_OUTPUT_ASL;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -t%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'T': /* Create a ACPI table template file */
|
||||
Gbl_DoTemplates = TRUE;
|
||||
Gbl_TemplateSignature = AcpiGbl_Optarg;
|
||||
break;
|
||||
|
||||
|
||||
case 'v': /* Version and verbosity settings */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
|
||||
exit (0);
|
||||
|
||||
case 'a':
|
||||
/* Disable All error/warning messages */
|
||||
|
||||
Gbl_NoErrors = TRUE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
/*
|
||||
* Support for integrated development environment(s).
|
||||
*
|
||||
* 1) No compiler signon
|
||||
* 2) Send stderr messages to stdout
|
||||
* 3) Less verbose error messages (single line only for each)
|
||||
* 4) Error/warning messages are formatted appropriately to
|
||||
* be recognized by MS Visual Studio
|
||||
*/
|
||||
Gbl_VerboseErrors = FALSE;
|
||||
Gbl_DoSignon = FALSE;
|
||||
Gbl_Files[ASL_FILE_STDERR].Handle = stdout;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
Gbl_DisplayOptimizations = TRUE;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
Gbl_DisplayRemarks = FALSE;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
Gbl_DoSignon = FALSE;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
Gbl_VerboseTemplates = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -v%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'w': /* Set warning levels */
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '1':
|
||||
Gbl_WarningLevel = ASL_WARNING;
|
||||
break;
|
||||
|
||||
case '2':
|
||||
Gbl_WarningLevel = ASL_WARNING2;
|
||||
break;
|
||||
|
||||
case '3':
|
||||
Gbl_WarningLevel = ASL_WARNING3;
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
Gbl_WarningsAsErrors = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 'x': /* Set debug print output level */
|
||||
AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
|
||||
break;
|
||||
|
||||
|
||||
case 'z':
|
||||
Gbl_UseOriginalCompilerId = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
return (-1);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslCommandLine
|
||||
*
|
||||
* PARAMETERS: argc/argv
|
||||
*
|
||||
* RETURN: Last argv index
|
||||
*
|
||||
* DESCRIPTION: Command line processing
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static int
|
||||
AslCommandLine (
|
||||
int argc,
|
||||
char **argv)
|
||||
{
|
||||
int BadCommandLine = 0;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Minimum command line contains at least the command and an input file */
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
|
||||
Usage ();
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* Process all command line options */
|
||||
|
||||
BadCommandLine = AslDoOptions (argc, argv, FALSE);
|
||||
|
||||
if (Gbl_DoTemplates)
|
||||
{
|
||||
Status = DtCreateTemplates (Gbl_TemplateSignature);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
exit (-1);
|
||||
}
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* Next parameter must be the input filename */
|
||||
|
||||
if (!argv[AcpiGbl_Optind] &&
|
||||
!Gbl_DisasmFlag &&
|
||||
!Gbl_GetAllTables)
|
||||
{
|
||||
printf ("Missing input filename\n");
|
||||
BadCommandLine = TRUE;
|
||||
}
|
||||
|
||||
if (Gbl_DoSignon)
|
||||
{
|
||||
printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
|
||||
if (Gbl_IgnoreErrors)
|
||||
{
|
||||
printf ("Ignoring all errors, forcing AML file generation\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* Abort if anything went wrong on the command line */
|
||||
|
||||
if (BadCommandLine)
|
||||
{
|
||||
printf ("\n");
|
||||
Usage ();
|
||||
exit (1);
|
||||
}
|
||||
|
||||
return (AcpiGbl_Optind);
|
||||
}
|
||||
|
||||
|
||||
@ -1021,24 +287,24 @@ main (
|
||||
int Index2;
|
||||
|
||||
|
||||
signal (SIGINT, AslSignalHandler);
|
||||
ACPI_DEBUG_INITIALIZE (); /* For debug version only */
|
||||
|
||||
/* Initialize preprocessor and compiler before command line processing */
|
||||
|
||||
signal (SIGINT, AslSignalHandler);
|
||||
AcpiGbl_ExternalFileList = NULL;
|
||||
AcpiDbgLevel = 0;
|
||||
|
||||
#ifdef _DEBUG
|
||||
_CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF |
|
||||
_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
|
||||
#endif
|
||||
|
||||
/* Init and command line */
|
||||
PrInitializePreprocessor ();
|
||||
AslInitialize ();
|
||||
|
||||
Index1 = Index2 = AslCommandLine (argc, argv);
|
||||
|
||||
AslInitialize ();
|
||||
PrInitializePreprocessor ();
|
||||
/* Allocate the line buffer(s), must be after command line */
|
||||
|
||||
/* Options that have no additional parameters or pathnames */
|
||||
Gbl_LineBufferSize /= 2;
|
||||
UtExpandLineBuffers ();
|
||||
|
||||
/* Perform global actions first/only */
|
||||
|
||||
if (Gbl_GetAllTables)
|
||||
{
|
||||
|
@ -46,17 +46,52 @@
|
||||
#define __ASLMESSAGES_H
|
||||
|
||||
|
||||
#define ASL_WARNING 0
|
||||
#define ASL_WARNING2 1
|
||||
#define ASL_WARNING3 2
|
||||
#define ASL_ERROR 3
|
||||
#define ASL_REMARK 4
|
||||
#define ASL_OPTIMIZATION 5
|
||||
#define ASL_NUM_REPORT_LEVELS 6
|
||||
typedef enum
|
||||
{
|
||||
ASL_OPTIMIZATION = 0,
|
||||
ASL_REMARK,
|
||||
ASL_WARNING,
|
||||
ASL_WARNING2,
|
||||
ASL_WARNING3,
|
||||
ASL_ERROR,
|
||||
ASL_NUM_REPORT_LEVELS
|
||||
|
||||
} ASL_MESSAGE_TYPES;
|
||||
|
||||
/* Values for all compiler messages */
|
||||
#ifdef ASL_EXCEPTIONS
|
||||
|
||||
/* Strings for message reporting levels, must match values above */
|
||||
|
||||
const char *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = {
|
||||
"Optimize",
|
||||
"Remark ",
|
||||
"Warning ",
|
||||
"Warning ",
|
||||
"Warning ",
|
||||
"Error "
|
||||
};
|
||||
|
||||
/* All lowercase versions for IDEs */
|
||||
|
||||
const char *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
|
||||
"optimize",
|
||||
"remark ",
|
||||
"warning ",
|
||||
"warning ",
|
||||
"warning ",
|
||||
"error "
|
||||
};
|
||||
|
||||
#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings above */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Values for all compiler messages.
|
||||
*
|
||||
* NOTE: With the introduction of the -vw option to disable specific messages,
|
||||
* new messages should only be added to the end of this list, so that values
|
||||
* for existing messages are not disturbed.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ASL_MSG_RESERVED = 0,
|
||||
@ -180,6 +215,7 @@ typedef enum
|
||||
ASL_MSG_SCOPE_TYPE,
|
||||
ASL_MSG_SEEK,
|
||||
ASL_MSG_SERIALIZED,
|
||||
ASL_MSG_SERIALIZED_REQUIRED,
|
||||
ASL_MSG_SINGLE_NAME_OPTIMIZATION,
|
||||
ASL_MSG_SOME_NO_RETVAL,
|
||||
ASL_MSG_STRING_LENGTH,
|
||||
@ -235,9 +271,15 @@ typedef enum
|
||||
|
||||
#ifdef ASL_EXCEPTIONS
|
||||
|
||||
/* Actual message strings for each compiler message */
|
||||
|
||||
char *AslMessages [] = {
|
||||
/*
|
||||
* Actual message strings for each compiler message.
|
||||
*
|
||||
* NOTE: With the introduction of the -vw option to disable specific messages,
|
||||
* new messages should only be added to the end of this list, so that values
|
||||
* for existing messages are not disturbed.
|
||||
*/
|
||||
char *AslMessages [] =
|
||||
{
|
||||
/* The zeroth message is reserved */ "",
|
||||
/* ASL_MSG_ALIGNMENT */ "Must be a multiple of alignment/granularity value",
|
||||
/* ASL_MSG_ALPHANUMERIC_STRING */ "String must be entirely alphanumeric",
|
||||
@ -358,6 +400,7 @@ char *AslMessages [] = {
|
||||
/* ASL_MSG_SCOPE_TYPE */ "Existing object has invalid type for Scope operator",
|
||||
/* ASL_MSG_SEEK */ "Could not seek file",
|
||||
/* ASL_MSG_SERIALIZED */ "Control Method marked Serialized",
|
||||
/* ASL_MSG_SERIALIZED_REQUIRED */ "Control Method should be made Serialized",
|
||||
/* ASL_MSG_SINGLE_NAME_OPTIMIZATION */ "NamePath optimized to NameSeg (uses run-time search path)",
|
||||
/* ASL_MSG_SOME_NO_RETVAL */ "Called method may not always return a value",
|
||||
/* ASL_MSG_STRING_LENGTH */ "String literal too long",
|
||||
@ -408,27 +451,6 @@ char *AslMessages [] = {
|
||||
/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero"
|
||||
};
|
||||
|
||||
|
||||
const char *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = {
|
||||
"Warning ",
|
||||
"Warning ",
|
||||
"Warning ",
|
||||
"Error ",
|
||||
"Remark ",
|
||||
"Optimize"
|
||||
};
|
||||
|
||||
const char *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
|
||||
"warning ",
|
||||
"warning ",
|
||||
"warning ",
|
||||
"error ",
|
||||
"remark ",
|
||||
"optimize"
|
||||
};
|
||||
|
||||
#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings above */
|
||||
|
||||
#endif /* ASL_EXCEPTIONS */
|
||||
|
||||
#endif /* __ASLMESSAGES_H */
|
||||
|
@ -44,12 +44,22 @@
|
||||
|
||||
#include <contrib/dev/acpica/compiler/aslcompiler.h>
|
||||
#include "aslcompiler.y.h"
|
||||
#include <contrib/dev/acpica/include/acparser.h>
|
||||
#include <contrib/dev/acpica/include/amlcode.h>
|
||||
|
||||
|
||||
#define _COMPONENT ACPI_COMPILER
|
||||
ACPI_MODULE_NAME ("aslmethod")
|
||||
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
void
|
||||
MtCheckNamedObjectInMethod (
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ASL_METHOD_INFO *MethodInfo);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: MtMethodAnalysisWalkBegin
|
||||
@ -111,6 +121,8 @@ MtMethodAnalysisWalkBegin (
|
||||
/* Get the SerializeRule and SyncLevel nodes, ignored here */
|
||||
|
||||
Next = Next->Asl.Next;
|
||||
MethodInfo->ShouldBeSerialized = (UINT8) Next->Asl.Value.Integer;
|
||||
|
||||
Next = Next->Asl.Next;
|
||||
ArgNode = Next;
|
||||
|
||||
@ -181,7 +193,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_METHODCALL:
|
||||
|
||||
if (MethodInfo &&
|
||||
@ -191,7 +202,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_LOCAL0:
|
||||
case PARSEOP_LOCAL1:
|
||||
case PARSEOP_LOCAL2:
|
||||
@ -236,7 +246,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_ARG0:
|
||||
case PARSEOP_ARG1:
|
||||
case PARSEOP_ARG2:
|
||||
@ -287,7 +296,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_RETURN:
|
||||
|
||||
if (!MethodInfo)
|
||||
@ -320,7 +328,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_BREAK:
|
||||
case PARSEOP_CONTINUE:
|
||||
|
||||
@ -340,7 +347,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_STALL:
|
||||
|
||||
/* We can range check if the argument is an integer */
|
||||
@ -352,7 +358,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_DEVICE:
|
||||
case PARSEOP_EVENT:
|
||||
case PARSEOP_MUTEX:
|
||||
@ -372,7 +377,6 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_NAME:
|
||||
|
||||
/* Typecheck any predefined names statically defined with Name() */
|
||||
@ -410,15 +414,74 @@ MtMethodAnalysisWalkBegin (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
/* Check for named object creation within a non-serialized method */
|
||||
|
||||
MtCheckNamedObjectInMethod (Op, MethodInfo);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: MtCheckNamedObjectInMethod
|
||||
*
|
||||
* PARAMETERS: Op - Current parser op
|
||||
* MethodInfo - Info for method being parsed
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Detect if a non-serialized method is creating a named object,
|
||||
* which could possibly cause problems if two threads execute
|
||||
* the method concurrently. Emit a remark in this case.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
MtCheckNamedObjectInMethod (
|
||||
ACPI_PARSE_OBJECT *Op,
|
||||
ASL_METHOD_INFO *MethodInfo)
|
||||
{
|
||||
const ACPI_OPCODE_INFO *OpInfo;
|
||||
|
||||
|
||||
/* We don't care about actual method declarations */
|
||||
|
||||
if (Op->Asl.AmlOpcode == AML_METHOD_OP)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Determine if we are creating a named object */
|
||||
|
||||
OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
|
||||
if (OpInfo->Class == AML_CLASS_NAMED_OBJECT)
|
||||
{
|
||||
/*
|
||||
* If we have a named object created within a non-serialized method,
|
||||
* emit a remark that the method should be serialized.
|
||||
*
|
||||
* Reason: If a thread blocks within the method for any reason, and
|
||||
* another thread enters the method, the method will fail because an
|
||||
* attempt will be made to create the same object twice.
|
||||
*/
|
||||
if (MethodInfo && !MethodInfo->ShouldBeSerialized)
|
||||
{
|
||||
AslError (ASL_REMARK, ASL_MSG_SERIALIZED_REQUIRED, MethodInfo->Op,
|
||||
"due to creation of named objects within");
|
||||
|
||||
/* Emit message only ONCE per method */
|
||||
|
||||
MethodInfo->ShouldBeSerialized = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: MtMethodAnalysisWalkEnd
|
||||
@ -446,6 +509,7 @@ MtMethodAnalysisWalkEnd (
|
||||
{
|
||||
case PARSEOP_METHOD:
|
||||
case PARSEOP_RETURN:
|
||||
|
||||
if (!MethodInfo)
|
||||
{
|
||||
printf ("No method info for method! [%s]\n", Op->Asl.Namepath);
|
||||
@ -458,6 +522,7 @@ MtMethodAnalysisWalkEnd (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -534,7 +599,6 @@ MtMethodAnalysisWalkEnd (
|
||||
ACPI_FREE (MethodInfo);
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_NAME:
|
||||
|
||||
/* Special check for two names like _L01 and _E01 in same scope */
|
||||
@ -542,7 +606,6 @@ MtMethodAnalysisWalkEnd (
|
||||
ApCheckForGpeNameConflict (Op);
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_RETURN:
|
||||
|
||||
/*
|
||||
@ -572,7 +635,6 @@ MtMethodAnalysisWalkEnd (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_IF:
|
||||
|
||||
if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) &&
|
||||
@ -588,7 +650,6 @@ MtMethodAnalysisWalkEnd (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_ELSE:
|
||||
|
||||
if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) &&
|
||||
|
@ -194,7 +194,6 @@ NsDoOneNamespaceObject (
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
|
||||
@ -203,7 +202,9 @@ NsDoOneNamespaceObject (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for other types */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -228,7 +229,6 @@ NsDoOneNamespaceObject (
|
||||
ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
if (Op->Asl.ParseOpcode == PARSEOP_NAME)
|
||||
@ -245,7 +245,6 @@ NsDoOneNamespaceObject (
|
||||
Op->Asl.Value.String);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_REGION_FIELD:
|
||||
|
||||
if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) ||
|
||||
@ -258,42 +257,47 @@ NsDoOneNamespaceObject (
|
||||
Op->Asl.Parent->Asl.ExtraValue, (UINT32) Op->Asl.Value.Integer);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
|
||||
switch (Op->Asl.ParseOpcode)
|
||||
{
|
||||
case PARSEOP_CREATEBYTEFIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BYTE ( 8 bit)]");
|
||||
break;
|
||||
|
||||
case PARSEOP_CREATEDWORDFIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [DWORD (32 bit)]");
|
||||
break;
|
||||
|
||||
case PARSEOP_CREATEQWORDFIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [QWORD (64 bit)]");
|
||||
break;
|
||||
|
||||
case PARSEOP_CREATEWORDFIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [WORD (16 bit)]");
|
||||
break;
|
||||
|
||||
case PARSEOP_CREATEBITFIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BIT ( 1 bit)]");
|
||||
break;
|
||||
|
||||
case PARSEOP_CREATEFIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Arbitrary Bit Field]");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
if (Op->Asl.ParseOpcode == PARSEOP_NAME)
|
||||
@ -316,7 +320,6 @@ NsDoOneNamespaceObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
if (Op->Asl.ParseOpcode == PARSEOP_NAME)
|
||||
@ -338,7 +341,6 @@ NsDoOneNamespaceObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
|
||||
@ -346,14 +348,12 @@ NsDoOneNamespaceObject (
|
||||
Op->Asl.AmlSubtreeLength);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_RESOURCE:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
|
||||
" [Desc Offset 0x%.4X Bytes]", Node->Value);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_RESOURCE_FIELD:
|
||||
|
||||
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
|
||||
@ -372,9 +372,10 @@ NsDoOneNamespaceObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for other types */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,6 @@ LsEmitOffsetTableEntry (
|
||||
UINT32 FileId,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
UINT32 Offset,
|
||||
UINT32 Length,
|
||||
char *OpName,
|
||||
UINT64 Value,
|
||||
UINT8 AmlOpcode);
|
||||
@ -77,7 +76,9 @@ LsEmitOffsetTableEntry (
|
||||
* Three types of objects are currently emitted to the offset table:
|
||||
* 1) Tagged (named) resource descriptors
|
||||
* 2) Named integer objects with constant integer values
|
||||
* 3) Operation Regions that have constant Offset (address) parameters
|
||||
* 3) Named package objects
|
||||
* 4) Operation Regions that have constant Offset (address) parameters
|
||||
* 5) Control methods
|
||||
*
|
||||
* The offset table allows the BIOS to dynamically update the values of these
|
||||
* objects at boot time.
|
||||
@ -94,7 +95,7 @@ LsAmlOffsetWalk (
|
||||
ACPI_NAMESPACE_NODE *Node;
|
||||
UINT32 Length;
|
||||
UINT32 OffsetOfOpcode;
|
||||
ACPI_PARSE_OBJECT *AddressOp;
|
||||
ACPI_PARSE_OBJECT *NextOp;
|
||||
|
||||
|
||||
/* Ignore actual data blocks for resource descriptors */
|
||||
@ -119,13 +120,17 @@ LsAmlOffsetWalk (
|
||||
(Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC))
|
||||
{
|
||||
LsEmitOffsetTableEntry (FileId, Node, Gbl_CurrentAmlOffset,
|
||||
Op->Asl.FinalAmlLength, Op->Asl.ParseOpName, 0, Op->Asl.Extra);
|
||||
Op->Asl.ParseOpName, 0, Op->Asl.Extra);
|
||||
Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* Named object -- Name (NameString, DataRefObject) */
|
||||
|
||||
else if (Op->Asl.AmlOpcode == AML_NAME_OP)
|
||||
switch (Op->Asl.AmlOpcode)
|
||||
{
|
||||
case AML_NAME_OP:
|
||||
|
||||
/* Named object -- Name (NameString, DataRefObject) */
|
||||
|
||||
if (!Op->Asl.Child)
|
||||
{
|
||||
FlPrintFile (FileId, "%s NO CHILD!\n", MsgBuffer);
|
||||
@ -154,39 +159,50 @@ LsAmlOffsetWalk (
|
||||
case AML_DWORD_OP:
|
||||
case AML_QWORD_OP:
|
||||
|
||||
/* The +1/-1 is to handle the integer size prefix (opcode) */
|
||||
/* The +1 is to handle the integer size prefix (opcode) */
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
|
||||
(Op->Asl.FinalAmlLength - 1), Op->Asl.ParseOpName,
|
||||
Op->Asl.Value.Integer, (UINT8) Op->Asl.AmlOpcode);
|
||||
Op->Asl.ParseOpName, Op->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode);
|
||||
break;
|
||||
|
||||
default:
|
||||
case AML_PACKAGE_OP:
|
||||
case AML_VAR_PACKAGE_OP:
|
||||
|
||||
NextOp = Op->Asl.Child;
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode),
|
||||
Op->Asl.ParseOpName,
|
||||
NextOp->Asl.Value.Integer,
|
||||
(UINT8) Op->Asl.AmlOpcode);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Gbl_CurrentAmlOffset += Length;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/* OperationRegion (NameString, RegionSpace, RegionOffset, RegionLength) */
|
||||
case AML_REGION_OP:
|
||||
|
||||
/* OperationRegion (NameString, RegionSpace, RegionOffset, RegionLength) */
|
||||
|
||||
else if (Op->Asl.AmlOpcode == AML_REGION_OP)
|
||||
{
|
||||
Length = Op->Asl.FinalAmlLength;
|
||||
|
||||
/* Get the name/namepath node */
|
||||
|
||||
AddressOp = Op->Asl.Child;
|
||||
OffsetOfOpcode = Length + AddressOp->Asl.FinalAmlLength + 1;
|
||||
NextOp = Op->Asl.Child;
|
||||
OffsetOfOpcode = Length + NextOp->Asl.FinalAmlLength + 1;
|
||||
|
||||
/* Get the SpaceId node, then the Offset (address) node */
|
||||
|
||||
AddressOp = AddressOp->Asl.Next;
|
||||
AddressOp = AddressOp->Asl.Next;
|
||||
NextOp = NextOp->Asl.Next;
|
||||
NextOp = NextOp->Asl.Next;
|
||||
|
||||
switch (AddressOp->Asl.AmlOpcode)
|
||||
switch (NextOp->Asl.AmlOpcode)
|
||||
{
|
||||
/*
|
||||
* We are only interested in integer constants that can be changed
|
||||
@ -198,12 +214,10 @@ LsAmlOffsetWalk (
|
||||
case AML_DWORD_OP:
|
||||
case AML_QWORD_OP:
|
||||
|
||||
/* The +1/-1 is to handle the integer size prefix (opcode) */
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
|
||||
(AddressOp->Asl.FinalAmlLength - 1), Op->Asl.ParseOpName,
|
||||
AddressOp->Asl.Value.Integer, (UINT8) AddressOp->Asl.AmlOpcode);
|
||||
Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
|
||||
(UINT8) NextOp->Asl.AmlOpcode);
|
||||
|
||||
Gbl_CurrentAmlOffset += Length;
|
||||
return (AE_OK);
|
||||
@ -211,6 +225,31 @@ LsAmlOffsetWalk (
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case AML_METHOD_OP:
|
||||
|
||||
/* Method (Namepath, ...) */
|
||||
|
||||
Length = Op->Asl.FinalAmlLength;
|
||||
|
||||
/* Get the NameSeg/NamePath Op */
|
||||
|
||||
NextOp = Op->Asl.Child;
|
||||
|
||||
/* Point to the *last* nameseg in the namepath */
|
||||
|
||||
OffsetOfOpcode = NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE;
|
||||
|
||||
LsEmitOffsetTableEntry (FileId, Node,
|
||||
(Gbl_CurrentAmlOffset + OffsetOfOpcode + Length),
|
||||
Op->Asl.ParseOpName,
|
||||
*((UINT32 *) &NextOp->Asl.Value.Buffer[OffsetOfOpcode]),
|
||||
(UINT8) Op->Asl.AmlOpcode);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength;
|
||||
@ -225,7 +264,6 @@ LsAmlOffsetWalk (
|
||||
* PARAMETERS: FileId - ID of current listing file
|
||||
* Node - Namespace node associated with the name
|
||||
* Offset - Offset of the value within the AML table
|
||||
* Length - Length in bytes of the value
|
||||
* OpName - Name of the AML opcode
|
||||
* Value - Current value of the AML field
|
||||
* AmlOpcode - Opcode associated with the field
|
||||
@ -241,7 +279,6 @@ LsEmitOffsetTableEntry (
|
||||
UINT32 FileId,
|
||||
ACPI_NAMESPACE_NODE *Node,
|
||||
UINT32 Offset,
|
||||
UINT32 Length,
|
||||
char *OpName,
|
||||
UINT64 Value,
|
||||
UINT8 AmlOpcode)
|
||||
@ -293,8 +330,6 @@ LsDoOffsetTableHeader (
|
||||
UINT32 FileId)
|
||||
{
|
||||
|
||||
Gbl_CurrentAmlOffset = 0;
|
||||
|
||||
FlPrintFile (FileId,
|
||||
"#ifndef __AML_OFFSET_TABLE_H\n"
|
||||
"#define __AML_OFFSET_TABLE_H\n\n");
|
||||
@ -302,13 +337,40 @@ LsDoOffsetTableHeader (
|
||||
FlPrintFile (FileId, "typedef struct {\n"
|
||||
" char *Pathname;\n"
|
||||
" unsigned long Offset;\n"
|
||||
" unsigned char AmlOpcode;\n"
|
||||
" unsigned long long AmlValue;\n"
|
||||
" unsigned char Opcode;\n"
|
||||
" unsigned long long Value;\n"
|
||||
"} AML_OFFSET_TABLE_ENTRY;\n\n");
|
||||
|
||||
FlPrintFile (FileId,
|
||||
"#endif /* __AML_OFFSET_TABLE_H */\n\n");
|
||||
|
||||
FlPrintFile (FileId,
|
||||
"/*\n"
|
||||
" * Information about supported object types:\n"
|
||||
" *\n"
|
||||
" * Integers:\n"
|
||||
" * Offset points to the actual integer data\n"
|
||||
" * Opcode is the integer prefix, indicates length of the data\n"
|
||||
" * Value is the existing value in the AML\n"
|
||||
" *\n"
|
||||
" * Packages:\n"
|
||||
" * Offset points to the package opcode\n"
|
||||
" * Opcode is the package or var_package opcode\n"
|
||||
" * Value is the package element cound\n"
|
||||
" *\n"
|
||||
" * Operation Regions:\n"
|
||||
" * Offset points to the region address data\n"
|
||||
" * Opcode is the address integer prefix, indicates length of the data\n"
|
||||
" * Value is the existing address value in the AML\n"
|
||||
" *\n"
|
||||
" * Control Methods:\n"
|
||||
" * Offset points to the first byte of the namepath\n"
|
||||
" *\n"
|
||||
" * Resource Descriptors:\n"
|
||||
" * Offset points to the start of the descriptor\n"
|
||||
" * Opcode is the descriptor type\n"
|
||||
" */\n");
|
||||
|
||||
FlPrintFile (FileId,
|
||||
"AML_OFFSET_TABLE_ENTRY %s_%s_OffsetTable[] =\n{\n",
|
||||
Gbl_TableSignature, Gbl_TableId);
|
||||
|
@ -266,6 +266,7 @@ OpcSetOptimalIntegerSize (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -811,7 +812,9 @@ OpcGenerateAmlOpcode (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for other opcodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -298,7 +298,6 @@ OpnDoFieldCommon (
|
||||
/* Nothing additional to do */
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_OFFSET:
|
||||
|
||||
/* New offset into the field */
|
||||
@ -342,7 +341,6 @@ OpnDoFieldCommon (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_NAMESEG:
|
||||
case PARSEOP_RESERVED_BYTES:
|
||||
|
||||
@ -360,6 +358,7 @@ OpnDoFieldCommon (
|
||||
case AML_FIELD_ACCESS_BYTE:
|
||||
case AML_FIELD_ACCESS_BUFFER:
|
||||
default:
|
||||
|
||||
MinimumLength = 8;
|
||||
break;
|
||||
|
||||
@ -380,7 +379,9 @@ OpnDoFieldCommon (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* All supported field opcodes must appear above */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -610,7 +611,6 @@ OpnDoBuffer (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_STRING_LITERAL:
|
||||
|
||||
/*
|
||||
@ -624,18 +624,16 @@ OpnDoBuffer (
|
||||
InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
|
||||
break;
|
||||
|
||||
|
||||
case PARSEOP_RAW_DATA:
|
||||
|
||||
/* Buffer nodes are already initialized (e.g. Unicode operator) */
|
||||
return;
|
||||
|
||||
|
||||
case PARSEOP_DEFAULT_ARG:
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_INVALID_OPERAND, InitializerOp,
|
||||
"Unknown buffer initializer opcode");
|
||||
printf ("Unknown buffer initializer opcode [%s]\n",
|
||||
@ -1092,6 +1090,7 @@ OpnAttachNameToNode (
|
||||
return;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1130,42 +1129,52 @@ OpnGenerateAmlOperands (
|
||||
switch (Op->Asl.ParseOpcode)
|
||||
{
|
||||
case PARSEOP_DEFINITIONBLOCK:
|
||||
|
||||
OpnDoDefinitionBlock (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_METHOD:
|
||||
|
||||
OpnDoMethod (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_MUTEX:
|
||||
|
||||
OpnDoMutex (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_FIELD:
|
||||
|
||||
OpnDoField (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_INDEXFIELD:
|
||||
|
||||
OpnDoIndexField (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_BANKFIELD:
|
||||
|
||||
OpnDoBankField (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_BUFFER:
|
||||
|
||||
OpnDoBuffer (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_LOADTABLE:
|
||||
|
||||
OpnDoLoadTable (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_OPERATIONREGION:
|
||||
|
||||
OpnDoRegion (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_RESOURCETEMPLATE:
|
||||
|
||||
RsDoResourceTemplate (Op);
|
||||
break;
|
||||
|
||||
@ -1173,9 +1182,11 @@ OpnGenerateAmlOperands (
|
||||
case PARSEOP_NAMESTRING:
|
||||
case PARSEOP_METHODCALL:
|
||||
case PARSEOP_STRING_LITERAL:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
791
sys/contrib/dev/acpica/compiler/asloptions.c
Normal file
791
sys/contrib/dev/acpica/compiler/asloptions.c
Normal file
@ -0,0 +1,791 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Module Name: asloptions - compiler command line processing
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2013, 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 <contrib/dev/acpica/compiler/aslcompiler.h>
|
||||
#include <contrib/dev/acpica/include/acapps.h>
|
||||
#include <contrib/dev/acpica/include/acdisasm.h>
|
||||
|
||||
#define _COMPONENT ACPI_COMPILER
|
||||
ACPI_MODULE_NAME ("asloption")
|
||||
|
||||
|
||||
/* Local prototypes */
|
||||
|
||||
static int
|
||||
AslDoOptions (
|
||||
int argc,
|
||||
char **argv,
|
||||
BOOLEAN IsResponseFile);
|
||||
|
||||
static void
|
||||
AslMergeOptionTokens (
|
||||
char *InBuffer,
|
||||
char *OutBuffer);
|
||||
|
||||
static int
|
||||
AslDoResponseFile (
|
||||
char *Filename);
|
||||
|
||||
|
||||
#define ASL_TOKEN_SEPARATORS " \t\n"
|
||||
#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslCommandLine
|
||||
*
|
||||
* PARAMETERS: argc/argv
|
||||
*
|
||||
* RETURN: Last argv index
|
||||
*
|
||||
* DESCRIPTION: Command line processing
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
int
|
||||
AslCommandLine (
|
||||
int argc,
|
||||
char **argv)
|
||||
{
|
||||
int BadCommandLine = 0;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
/* Minimum command line contains at least the command and an input file */
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
|
||||
Usage ();
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* Process all command line options */
|
||||
|
||||
BadCommandLine = AslDoOptions (argc, argv, FALSE);
|
||||
|
||||
if (Gbl_DoTemplates)
|
||||
{
|
||||
Status = DtCreateTemplates (Gbl_TemplateSignature);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
exit (-1);
|
||||
}
|
||||
exit (1);
|
||||
}
|
||||
|
||||
/* Next parameter must be the input filename */
|
||||
|
||||
if (!argv[AcpiGbl_Optind] &&
|
||||
!Gbl_DisasmFlag &&
|
||||
!Gbl_GetAllTables)
|
||||
{
|
||||
printf ("Missing input filename\n");
|
||||
BadCommandLine = TRUE;
|
||||
}
|
||||
|
||||
if (Gbl_DoSignon)
|
||||
{
|
||||
printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
|
||||
if (Gbl_IgnoreErrors)
|
||||
{
|
||||
printf ("Ignoring all errors, forcing AML file generation\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (BadCommandLine)
|
||||
{
|
||||
printf ("\n");
|
||||
Usage ();
|
||||
exit (1);
|
||||
}
|
||||
|
||||
return (AcpiGbl_Optind);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslDoOptions
|
||||
*
|
||||
* PARAMETERS: argc/argv - Standard argc/argv
|
||||
* IsResponseFile - TRUE if executing a response file.
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Command line option processing
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static int
|
||||
AslDoOptions (
|
||||
int argc,
|
||||
char **argv,
|
||||
BOOLEAN IsResponseFile)
|
||||
{
|
||||
ACPI_STATUS Status;
|
||||
UINT32 j;
|
||||
|
||||
|
||||
/* Get the command line options */
|
||||
|
||||
while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j)
|
||||
{
|
||||
case '@': /* Begin a response file */
|
||||
|
||||
if (IsResponseFile)
|
||||
{
|
||||
printf ("Nested command files are not supported\n");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (AslDoResponseFile (AcpiGbl_Optarg))
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'b': /* Debug output options */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'f':
|
||||
|
||||
AslCompilerdebug = 1; /* same as yydebug */
|
||||
DtParserdebug = 1;
|
||||
PrParserdebug = 1;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -b%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Produce debug output file */
|
||||
|
||||
Gbl_DebugFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'r':
|
||||
|
||||
Gbl_NoResourceChecking = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd': /* Disassembler */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
|
||||
Gbl_DoCompile = FALSE;
|
||||
break;
|
||||
|
||||
case 'a':
|
||||
|
||||
Gbl_DoCompile = FALSE;
|
||||
Gbl_DisassembleAll = TRUE;
|
||||
break;
|
||||
|
||||
case 'b': /* Do not convert buffers to resource descriptors */
|
||||
|
||||
AcpiGbl_NoResourceDisassembly = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
Gbl_DisasmFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'D': /* Define a symbol */
|
||||
|
||||
PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
|
||||
break;
|
||||
|
||||
case 'e': /* External files for disassembler */
|
||||
|
||||
Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
printf ("Could not add %s to external list\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'f': /* Ignore errors and force creation of aml file */
|
||||
|
||||
Gbl_IgnoreErrors = TRUE;
|
||||
break;
|
||||
|
||||
case 'G':
|
||||
|
||||
Gbl_CompileGeneric = TRUE;
|
||||
break;
|
||||
|
||||
case 'g': /* Get all ACPI tables */
|
||||
|
||||
Gbl_GetAllTables = TRUE;
|
||||
Gbl_DoCompile = FALSE;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
|
||||
Usage ();
|
||||
exit (0);
|
||||
|
||||
case 'c':
|
||||
|
||||
UtDisplayConstantOpcodes ();
|
||||
exit (0);
|
||||
|
||||
case 'f':
|
||||
|
||||
AslFilenameHelp ();
|
||||
exit (0);
|
||||
|
||||
case 'r':
|
||||
|
||||
/* reserved names */
|
||||
|
||||
ApDisplayReservedNames ();
|
||||
exit (0);
|
||||
|
||||
case 't':
|
||||
|
||||
UtDisplaySupportedTables ();
|
||||
exit (0);
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -h%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
case 'I': /* Add an include file search directory */
|
||||
|
||||
FlAddIncludeDirectory (AcpiGbl_Optarg);
|
||||
break;
|
||||
|
||||
case 'i': /* Output AML as an include file */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
/* Produce assembly code include file */
|
||||
|
||||
Gbl_AsmIncludeOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
/* Produce C include file */
|
||||
|
||||
Gbl_C_IncludeOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
|
||||
/* Compiler/Disassembler: Ignore the NOOP operator */
|
||||
|
||||
AcpiGbl_IgnoreNoopOperator = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'l': /* Listing files */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
|
||||
/* Produce listing file (Mixed source/aml) */
|
||||
|
||||
Gbl_ListingFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
|
||||
/* Produce preprocessor output file */
|
||||
|
||||
Gbl_PreprocessorOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
|
||||
/* Produce namespace file */
|
||||
|
||||
Gbl_NsOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
|
||||
/* Produce combined source file */
|
||||
|
||||
Gbl_SourceOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -l%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'm': /* Set line buffer size */
|
||||
|
||||
Gbl_LineBufferSize = (UINT32) strtoul (AcpiGbl_Optarg, NULL, 0) * 1024;
|
||||
if (Gbl_LineBufferSize < ASL_DEFAULT_LINE_BUFFER_SIZE)
|
||||
{
|
||||
Gbl_LineBufferSize = ASL_DEFAULT_LINE_BUFFER_SIZE;
|
||||
}
|
||||
printf ("Line Buffer Size: %u\n", Gbl_LineBufferSize);
|
||||
break;
|
||||
|
||||
case 'n': /* Parse only */
|
||||
|
||||
Gbl_ParseOnlyFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'o': /* Control compiler AML optimizations */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
/* Disable all optimizations */
|
||||
|
||||
Gbl_FoldConstants = FALSE;
|
||||
Gbl_IntegerOptimizationFlag = FALSE;
|
||||
Gbl_ReferenceOptimizationFlag = FALSE;
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
|
||||
/* Disable folding on "normal" expressions */
|
||||
|
||||
Gbl_FoldConstants = FALSE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
|
||||
/* Disable integer optimization to constants */
|
||||
|
||||
Gbl_IntegerOptimizationFlag = FALSE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
|
||||
/* Disable named reference optimization */
|
||||
|
||||
Gbl_ReferenceOptimizationFlag = FALSE;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
||||
/* Display compile time(s) */
|
||||
|
||||
Gbl_CompileTimesFlag = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'P': /* Preprocessor options */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^': /* Proprocess only, emit (.i) file */
|
||||
|
||||
Gbl_PreprocessOnly = TRUE;
|
||||
Gbl_PreprocessorOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'n': /* Disable preprocessor */
|
||||
|
||||
Gbl_PreprocessFlag = FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'p': /* Override default AML output filename */
|
||||
|
||||
Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
|
||||
Gbl_UseDefaultAmlFilename = FALSE;
|
||||
break;
|
||||
|
||||
case 'r': /* Override revision found in table header */
|
||||
|
||||
Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
|
||||
break;
|
||||
|
||||
case 's': /* Create AML in a source code file */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
/* Produce assembly code output file */
|
||||
|
||||
Gbl_AsmOutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
/* Produce C hex output file */
|
||||
|
||||
Gbl_C_OutputFlag = TRUE;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
|
||||
/* Produce AML offset table in C */
|
||||
|
||||
Gbl_C_OffsetTableFlag = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 't': /* Produce hex table output file */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case 'a':
|
||||
|
||||
Gbl_HexOutputFlag = HEX_OUTPUT_ASM;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
|
||||
Gbl_HexOutputFlag = HEX_OUTPUT_C;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
|
||||
Gbl_HexOutputFlag = HEX_OUTPUT_ASL;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -t%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'T': /* Create a ACPI table template file */
|
||||
|
||||
Gbl_DoTemplates = TRUE;
|
||||
Gbl_TemplateSignature = AcpiGbl_Optarg;
|
||||
break;
|
||||
|
||||
case 'v': /* Version and verbosity settings */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '^':
|
||||
|
||||
printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
|
||||
exit (0);
|
||||
|
||||
case 'a':
|
||||
|
||||
/* Disable All error/warning messages */
|
||||
|
||||
Gbl_NoErrors = TRUE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
/*
|
||||
* Support for integrated development environment(s).
|
||||
*
|
||||
* 1) No compiler signon
|
||||
* 2) Send stderr messages to stdout
|
||||
* 3) Less verbose error messages (single line only for each)
|
||||
* 4) Error/warning messages are formatted appropriately to
|
||||
* be recognized by MS Visual Studio
|
||||
*/
|
||||
Gbl_VerboseErrors = FALSE;
|
||||
Gbl_DoSignon = FALSE;
|
||||
Gbl_Files[ASL_FILE_STDERR].Handle = stdout;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
|
||||
Gbl_DisplayOptimizations = TRUE;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
|
||||
Gbl_DisplayRemarks = FALSE;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
|
||||
Gbl_DoSignon = FALSE;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
||||
Gbl_VerboseTemplates = TRUE;
|
||||
break;
|
||||
|
||||
case 'w':
|
||||
|
||||
/* Get the required argument */
|
||||
|
||||
if (AcpiGetoptArgument (argc, argv))
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
|
||||
Status = AslDisableException (AcpiGbl_Optarg);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -v%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'w': /* Set warning levels */
|
||||
|
||||
switch (AcpiGbl_Optarg[0])
|
||||
{
|
||||
case '1':
|
||||
|
||||
Gbl_WarningLevel = ASL_WARNING;
|
||||
break;
|
||||
|
||||
case '2':
|
||||
|
||||
Gbl_WarningLevel = ASL_WARNING2;
|
||||
break;
|
||||
|
||||
case '3':
|
||||
|
||||
Gbl_WarningLevel = ASL_WARNING3;
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
|
||||
Gbl_WarningsAsErrors = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'x': /* Set debug print output level */
|
||||
|
||||
AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
|
||||
break;
|
||||
|
||||
case 'z':
|
||||
|
||||
Gbl_UseOriginalCompilerId = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return (-1);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslMergeOptionTokens
|
||||
*
|
||||
* PARAMETERS: InBuffer - Input containing an option string
|
||||
* OutBuffer - Merged output buffer
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Remove all whitespace from an option string.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static void
|
||||
AslMergeOptionTokens (
|
||||
char *InBuffer,
|
||||
char *OutBuffer)
|
||||
{
|
||||
char *Token;
|
||||
|
||||
|
||||
*OutBuffer = 0;
|
||||
|
||||
Token = strtok (InBuffer, ASL_TOKEN_SEPARATORS);
|
||||
while (Token)
|
||||
{
|
||||
strcat (OutBuffer, Token);
|
||||
Token = strtok (NULL, ASL_TOKEN_SEPARATORS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: AslDoResponseFile
|
||||
*
|
||||
* PARAMETERS: Filename - Name of the response file
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Open a response file and process all options within.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
static int
|
||||
AslDoResponseFile (
|
||||
char *Filename)
|
||||
{
|
||||
char *argv = StringBuffer2;
|
||||
FILE *ResponseFile;
|
||||
int OptStatus = 0;
|
||||
int Opterr;
|
||||
int Optind;
|
||||
|
||||
|
||||
ResponseFile = fopen (Filename, "r");
|
||||
if (!ResponseFile)
|
||||
{
|
||||
printf ("Could not open command file %s, %s\n",
|
||||
Filename, strerror (errno));
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Must save the current GetOpt globals */
|
||||
|
||||
Opterr = AcpiGbl_Opterr;
|
||||
Optind = AcpiGbl_Optind;
|
||||
|
||||
/*
|
||||
* Process all lines in the response file. There must be one complete
|
||||
* option per line
|
||||
*/
|
||||
while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile))
|
||||
{
|
||||
/* Compress all tokens, allowing us to use a single argv entry */
|
||||
|
||||
AslMergeOptionTokens (StringBuffer, StringBuffer2);
|
||||
|
||||
/* Process the option */
|
||||
|
||||
AcpiGbl_Opterr = 0;
|
||||
AcpiGbl_Optind = 0;
|
||||
|
||||
OptStatus = AslDoOptions (1, &argv, TRUE);
|
||||
if (OptStatus)
|
||||
{
|
||||
printf ("Invalid option in command file %s: %s\n",
|
||||
Filename, StringBuffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Restore the GetOpt globals */
|
||||
|
||||
AcpiGbl_Opterr = Opterr;
|
||||
AcpiGbl_Optind = Optind;
|
||||
|
||||
fclose (ResponseFile);
|
||||
return (OptStatus);
|
||||
}
|
@ -310,7 +310,6 @@ ApCheckPredefinedReturnValue (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/*
|
||||
* All other ops are very difficult or impossible to typecheck at
|
||||
* compile time. These include all Localx, Argx, and method
|
||||
@ -379,6 +378,7 @@ ApCheckForPredefinedObject (
|
||||
return;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -624,33 +624,53 @@ ApCheckObjectType (
|
||||
case PARSEOP_ONE:
|
||||
case PARSEOP_ONES:
|
||||
case PARSEOP_INTEGER:
|
||||
|
||||
ReturnBtype = ACPI_RTYPE_INTEGER;
|
||||
TypeName = "Integer";
|
||||
break;
|
||||
|
||||
case PARSEOP_STRING_LITERAL:
|
||||
|
||||
ReturnBtype = ACPI_RTYPE_STRING;
|
||||
TypeName = "String";
|
||||
break;
|
||||
|
||||
case PARSEOP_BUFFER:
|
||||
|
||||
ReturnBtype = ACPI_RTYPE_BUFFER;
|
||||
TypeName = "Buffer";
|
||||
break;
|
||||
|
||||
case PARSEOP_PACKAGE:
|
||||
case PARSEOP_VAR_PACKAGE:
|
||||
|
||||
ReturnBtype = ACPI_RTYPE_PACKAGE;
|
||||
TypeName = "Package";
|
||||
break;
|
||||
|
||||
case PARSEOP_NAMESEG:
|
||||
case PARSEOP_NAMESTRING:
|
||||
/*
|
||||
* Ignore any named references within a package object.
|
||||
*
|
||||
* For Package objects, references are allowed instead of any of the
|
||||
* standard data types (Integer/String/Buffer/Package). These
|
||||
* references are resolved at runtime. NAMESEG and NAMESTRING are
|
||||
* impossible to typecheck at compile time because the type of
|
||||
* any named object can be changed at runtime (for example,
|
||||
* CopyObject will change the type of the target object).
|
||||
*/
|
||||
if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
|
||||
{
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
ReturnBtype = ACPI_RTYPE_REFERENCE;
|
||||
TypeName = "Reference";
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Not one of the supported object types */
|
||||
|
||||
TypeName = UtGetOpName (Op->Asl.ParseOpcode);
|
||||
|
@ -319,6 +319,7 @@ RsLargeAddressCheck (
|
||||
case ACPI_RESOURCE_FLAG_MIF:
|
||||
case ACPI_RESOURCE_FLAG_MAF:
|
||||
default:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_INVALID_ADDR_FLAGS, LengthOp, NULL);
|
||||
}
|
||||
}
|
||||
@ -364,6 +365,7 @@ RsLargeAddressCheck (
|
||||
|
||||
case (ACPI_RESOURCE_FLAG_MIF | ACPI_RESOURCE_FLAG_MAF):
|
||||
default:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_INVALID_ADDR_FLAGS, LengthOp, NULL);
|
||||
}
|
||||
}
|
||||
@ -655,45 +657,54 @@ RsDoOneResourceDescriptor (
|
||||
switch (DescriptorTypeOp->Asl.ParseOpcode)
|
||||
{
|
||||
case PARSEOP_DMA:
|
||||
|
||||
Rnode = RsDoDmaDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_FIXEDDMA:
|
||||
|
||||
Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_DWORDIO:
|
||||
|
||||
Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_DWORDMEMORY:
|
||||
|
||||
Rnode = RsDoDwordMemoryDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_DWORDSPACE:
|
||||
|
||||
Rnode = RsDoDwordSpaceDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_ENDDEPENDENTFN:
|
||||
|
||||
switch (*State)
|
||||
{
|
||||
case ACPI_RSTATE_NORMAL:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_MISSING_STARTDEPENDENT,
|
||||
DescriptorTypeOp, NULL);
|
||||
break;
|
||||
|
||||
case ACPI_RSTATE_START_DEPENDENT:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
|
||||
DescriptorTypeOp, NULL);
|
||||
break;
|
||||
|
||||
case ACPI_RSTATE_DEPENDENT_LIST:
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -703,89 +714,107 @@ RsDoOneResourceDescriptor (
|
||||
break;
|
||||
|
||||
case PARSEOP_ENDTAG:
|
||||
|
||||
Rnode = RsDoEndTagDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_EXTENDEDIO:
|
||||
|
||||
Rnode = RsDoExtendedIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_EXTENDEDMEMORY:
|
||||
|
||||
Rnode = RsDoExtendedMemoryDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_EXTENDEDSPACE:
|
||||
|
||||
Rnode = RsDoExtendedSpaceDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_FIXEDIO:
|
||||
|
||||
Rnode = RsDoFixedIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_INTERRUPT:
|
||||
|
||||
Rnode = RsDoInterruptDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_IO:
|
||||
|
||||
Rnode = RsDoIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_IRQ:
|
||||
|
||||
Rnode = RsDoIrqDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_IRQNOFLAGS:
|
||||
|
||||
Rnode = RsDoIrqNoFlagsDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_MEMORY24:
|
||||
|
||||
Rnode = RsDoMemory24Descriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_MEMORY32:
|
||||
|
||||
Rnode = RsDoMemory32Descriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_MEMORY32FIXED:
|
||||
|
||||
Rnode = RsDoMemory32FixedDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_QWORDIO:
|
||||
|
||||
Rnode = RsDoQwordIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_QWORDMEMORY:
|
||||
|
||||
Rnode = RsDoQwordMemoryDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_QWORDSPACE:
|
||||
|
||||
Rnode = RsDoQwordSpaceDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_REGISTER:
|
||||
|
||||
Rnode = RsDoGeneralRegisterDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_STARTDEPENDENTFN:
|
||||
|
||||
switch (*State)
|
||||
{
|
||||
case ACPI_RSTATE_START_DEPENDENT:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
|
||||
DescriptorTypeOp, NULL);
|
||||
break;
|
||||
@ -793,6 +822,7 @@ RsDoOneResourceDescriptor (
|
||||
case ACPI_RSTATE_NORMAL:
|
||||
case ACPI_RSTATE_DEPENDENT_LIST:
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -803,9 +833,11 @@ RsDoOneResourceDescriptor (
|
||||
break;
|
||||
|
||||
case PARSEOP_STARTDEPENDENTFN_NOPRI:
|
||||
|
||||
switch (*State)
|
||||
{
|
||||
case ACPI_RSTATE_START_DEPENDENT:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
|
||||
DescriptorTypeOp, NULL);
|
||||
break;
|
||||
@ -813,6 +845,7 @@ RsDoOneResourceDescriptor (
|
||||
case ACPI_RSTATE_NORMAL:
|
||||
case ACPI_RSTATE_DEPENDENT_LIST:
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -823,60 +856,72 @@ RsDoOneResourceDescriptor (
|
||||
break;
|
||||
|
||||
case PARSEOP_VENDORLONG:
|
||||
|
||||
Rnode = RsDoVendorLargeDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_VENDORSHORT:
|
||||
|
||||
Rnode = RsDoVendorSmallDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_WORDBUSNUMBER:
|
||||
|
||||
Rnode = RsDoWordBusNumberDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_WORDIO:
|
||||
|
||||
Rnode = RsDoWordIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_WORDSPACE:
|
||||
|
||||
Rnode = RsDoWordSpaceDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_GPIO_INT:
|
||||
|
||||
Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_GPIO_IO:
|
||||
|
||||
Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_I2C_SERIALBUS:
|
||||
|
||||
Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_SPI_SERIALBUS:
|
||||
|
||||
Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_UART_SERIALBUS:
|
||||
|
||||
Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp,
|
||||
CurrentByteOffset);
|
||||
break;
|
||||
|
||||
case PARSEOP_DEFAULT_ARG:
|
||||
|
||||
/* Just ignore any of these, they are used as fillers/placeholders */
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown resource descriptor type [%s]\n",
|
||||
DescriptorTypeOp->Asl.ParseOpName);
|
||||
break;
|
||||
|
@ -245,6 +245,7 @@ RsDoFixedDmaDescriptor (
|
||||
break;
|
||||
|
||||
default: /* Ignore any extra nodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -617,7 +617,6 @@ RsDoGpioIoDescriptor (
|
||||
break;
|
||||
|
||||
case 9: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */
|
||||
|
||||
/*
|
||||
* Always set the VendorOffset even if there is no Vendor Data.
|
||||
* This field is required in order to calculate the length
|
||||
@ -812,6 +811,7 @@ RsDoI2cSerialBusDescriptor (
|
||||
break;
|
||||
|
||||
default: /* Ignore any extra nodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -986,6 +986,7 @@ RsDoSpiSerialBusDescriptor (
|
||||
break;
|
||||
|
||||
default: /* Ignore any extra nodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1177,6 +1178,7 @@ RsDoUartSerialBusDescriptor (
|
||||
break;
|
||||
|
||||
default: /* Ignore any extra nodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -534,6 +534,7 @@ AslDoOneFile (
|
||||
return (AE_ERROR);
|
||||
|
||||
default:
|
||||
|
||||
printf ("Unknown file type %X\n", Gbl_FileType);
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
@ -395,16 +395,19 @@ count (
|
||||
switch (Type)
|
||||
{
|
||||
case 2:
|
||||
|
||||
TotalKeywords++;
|
||||
TotalNamedObjects++;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
TotalKeywords++;
|
||||
TotalExecutableOpcodes++;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -594,6 +597,7 @@ DoCharacter:
|
||||
goto CompletedString;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -605,34 +609,42 @@ DoCharacter:
|
||||
switch (StringChar)
|
||||
{
|
||||
case 'a':
|
||||
|
||||
StringChar = 0x07; /* BELL */
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
|
||||
StringChar = 0x08; /* BACKSPACE */
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
|
||||
StringChar = 0x0C; /* FORMFEED */
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
|
||||
StringChar = 0x0A; /* LINEFEED */
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
|
||||
StringChar = 0x0D; /* CARRIAGE RETURN*/
|
||||
break;
|
||||
|
||||
case 't':
|
||||
|
||||
StringChar = 0x09; /* HORIZONTAL TAB */
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
|
||||
StringChar = 0x0B; /* VERTICAL TAB */
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
|
||||
State = ASL_HEX_CONSTANT;
|
||||
i = 0;
|
||||
continue;
|
||||
@ -640,6 +652,7 @@ DoCharacter:
|
||||
case '\'': /* Single Quote */
|
||||
case '\"': /* Double Quote */
|
||||
case '\\': /* Backslash */
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -709,7 +722,6 @@ DoCharacter:
|
||||
i++;
|
||||
continue;
|
||||
|
||||
|
||||
case ASL_HEX_CONSTANT:
|
||||
|
||||
/* Up to two hex digits allowed */
|
||||
@ -755,6 +767,7 @@ DoCharacter:
|
||||
continue;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -299,15 +299,16 @@ TrTransformSubtree (
|
||||
switch (Op->Asl.ParseOpcode)
|
||||
{
|
||||
case PARSEOP_DEFINITIONBLOCK:
|
||||
|
||||
TrDoDefinitionBlock (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_SWITCH:
|
||||
|
||||
TrDoSwitch (Op);
|
||||
break;
|
||||
|
||||
case PARSEOP_METHOD:
|
||||
|
||||
/*
|
||||
* TBD: Zero the tempname (_T_x) count. Probably shouldn't be a global,
|
||||
* however
|
||||
@ -316,7 +317,9 @@ TrTransformSubtree (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do here for other opcodes */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -700,18 +703,21 @@ TrDoSwitch (
|
||||
switch (Btype)
|
||||
{
|
||||
case ACPI_BTYPE_INTEGER:
|
||||
|
||||
NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_ZERO,
|
||||
(UINT64) 0);
|
||||
TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
|
||||
break;
|
||||
|
||||
case ACPI_BTYPE_STRING:
|
||||
|
||||
NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
|
||||
(UINT64) ACPI_TO_INTEGER (""));
|
||||
TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
|
||||
break;
|
||||
|
||||
case ACPI_BTYPE_BUFFER:
|
||||
|
||||
(void) TrLinkPeerNode (NewOp2, TrCreateValuedLeafNode (PARSEOP_BUFFER,
|
||||
(UINT64) 0));
|
||||
Next = NewOp2->Asl.Next;
|
||||
@ -728,6 +734,7 @@ TrDoSwitch (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -185,20 +185,24 @@ TrUpdateNode (
|
||||
switch (ParseOpcode)
|
||||
{
|
||||
case PARSEOP_BYTECONST:
|
||||
|
||||
Op->Asl.Value.Integer = ACPI_UINT8_MAX;
|
||||
break;
|
||||
|
||||
case PARSEOP_WORDCONST:
|
||||
|
||||
Op->Asl.Value.Integer = ACPI_UINT16_MAX;
|
||||
break;
|
||||
|
||||
case PARSEOP_DWORDCONST:
|
||||
|
||||
Op->Asl.Value.Integer = ACPI_UINT32_MAX;
|
||||
break;
|
||||
|
||||
/* Don't need to do the QWORD case */
|
||||
|
||||
default:
|
||||
|
||||
/* Don't care about others */
|
||||
break;
|
||||
}
|
||||
@ -214,22 +218,27 @@ TrUpdateNode (
|
||||
switch (ParseOpcode)
|
||||
{
|
||||
case PARSEOP_BYTECONST:
|
||||
|
||||
UtCheckIntegerRange (Op, 0x00, ACPI_UINT8_MAX);
|
||||
Op->Asl.Value.Integer &= ACPI_UINT8_MAX;
|
||||
break;
|
||||
|
||||
case PARSEOP_WORDCONST:
|
||||
|
||||
UtCheckIntegerRange (Op, 0x00, ACPI_UINT16_MAX);
|
||||
Op->Asl.Value.Integer &= ACPI_UINT16_MAX;
|
||||
break;
|
||||
|
||||
case PARSEOP_DWORDCONST:
|
||||
|
||||
UtCheckIntegerRange (Op, 0x00, ACPI_UINT32_MAX);
|
||||
Op->Asl.Value.Integer &= ACPI_UINT32_MAX;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Don't care about others, don't need to check QWORD */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -257,54 +266,71 @@ TrGetNodeFlagName (
|
||||
switch (Flags)
|
||||
{
|
||||
case NODE_VISITED:
|
||||
|
||||
return ("NODE_VISITED");
|
||||
|
||||
case NODE_AML_PACKAGE:
|
||||
|
||||
return ("NODE_AML_PACKAGE");
|
||||
|
||||
case NODE_IS_TARGET:
|
||||
|
||||
return ("NODE_IS_TARGET");
|
||||
|
||||
case NODE_IS_RESOURCE_DESC:
|
||||
|
||||
return ("NODE_IS_RESOURCE_DESC");
|
||||
|
||||
case NODE_IS_RESOURCE_FIELD:
|
||||
|
||||
return ("NODE_IS_RESOURCE_FIELD");
|
||||
|
||||
case NODE_HAS_NO_EXIT:
|
||||
|
||||
return ("NODE_HAS_NO_EXIT");
|
||||
|
||||
case NODE_IF_HAS_NO_EXIT:
|
||||
|
||||
return ("NODE_IF_HAS_NO_EXIT");
|
||||
|
||||
case NODE_NAME_INTERNALIZED:
|
||||
|
||||
return ("NODE_NAME_INTERNALIZED");
|
||||
|
||||
case NODE_METHOD_NO_RETVAL:
|
||||
|
||||
return ("NODE_METHOD_NO_RETVAL");
|
||||
|
||||
case NODE_METHOD_SOME_NO_RETVAL:
|
||||
|
||||
return ("NODE_METHOD_SOME_NO_RETVAL");
|
||||
|
||||
case NODE_RESULT_NOT_USED:
|
||||
|
||||
return ("NODE_RESULT_NOT_USED");
|
||||
|
||||
case NODE_METHOD_TYPED:
|
||||
|
||||
return ("NODE_METHOD_TYPED");
|
||||
|
||||
case NODE_COMPILE_TIME_CONST:
|
||||
|
||||
return ("NODE_COMPILE_TIME_CONST");
|
||||
|
||||
case NODE_IS_TERM_ARG:
|
||||
|
||||
return ("NODE_IS_TERM_ARG");
|
||||
|
||||
case NODE_WAS_ONES_OP:
|
||||
|
||||
return ("NODE_WAS_ONES_OP");
|
||||
|
||||
case NODE_IS_NAME_DECLARATION:
|
||||
|
||||
return ("NODE_IS_NAME_DECLARATION");
|
||||
|
||||
default:
|
||||
|
||||
return ("Multiple Flags (or unknown flag) set");
|
||||
}
|
||||
}
|
||||
@ -470,11 +496,13 @@ TrCreateConstantLeafNode (
|
||||
switch (ParseOpcode)
|
||||
{
|
||||
case PARSEOP___LINE__:
|
||||
|
||||
Op = TrAllocateNode (PARSEOP_INTEGER);
|
||||
Op->Asl.Value.Integer = Op->Asl.LineNumber;
|
||||
break;
|
||||
|
||||
case PARSEOP___PATH__:
|
||||
|
||||
Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
|
||||
|
||||
/* Op.Asl.Filename contains the full pathname to the file */
|
||||
@ -483,6 +511,7 @@ TrCreateConstantLeafNode (
|
||||
break;
|
||||
|
||||
case PARSEOP___FILE__:
|
||||
|
||||
Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
|
||||
|
||||
/* Get the simple filename from the full path */
|
||||
@ -493,6 +522,7 @@ TrCreateConstantLeafNode (
|
||||
break;
|
||||
|
||||
case PARSEOP___DATE__:
|
||||
|
||||
Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
|
||||
|
||||
/* Get a copy of the current time */
|
||||
@ -507,6 +537,7 @@ TrCreateConstantLeafNode (
|
||||
break;
|
||||
|
||||
default: /* This would be an internal error */
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
@ -551,30 +582,37 @@ TrCreateValuedLeafNode (
|
||||
switch (ParseOpcode)
|
||||
{
|
||||
case PARSEOP_STRING_LITERAL:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
|
||||
break;
|
||||
|
||||
case PARSEOP_NAMESEG:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
|
||||
break;
|
||||
|
||||
case PARSEOP_NAMESTRING:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
|
||||
break;
|
||||
|
||||
case PARSEOP_EISAID:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
|
||||
break;
|
||||
|
||||
case PARSEOP_METHOD:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "METHOD");
|
||||
break;
|
||||
|
||||
case PARSEOP_INTEGER:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "INTEGER");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -628,20 +666,25 @@ TrCreateNode (
|
||||
switch (ParseOpcode)
|
||||
{
|
||||
case PARSEOP_DEFINITIONBLOCK:
|
||||
|
||||
RootNode = Op;
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->");
|
||||
break;
|
||||
|
||||
case PARSEOP_OPERATIONREGION:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->");
|
||||
break;
|
||||
|
||||
case PARSEOP_OR:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "OR->");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for other opcodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -746,20 +789,25 @@ TrLinkChildren (
|
||||
switch (Op->Asl.ParseOpcode)
|
||||
{
|
||||
case PARSEOP_DEFINITIONBLOCK:
|
||||
|
||||
RootNode = Op;
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->");
|
||||
break;
|
||||
|
||||
case PARSEOP_OPERATIONREGION:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->");
|
||||
break;
|
||||
|
||||
case PARSEOP_OR:
|
||||
|
||||
DbgPrint (ASL_PARSE_OUTPUT, "OR->");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Nothing to do for other opcodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1106,7 +1154,6 @@ TrWalkParseTree (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ASL_WALK_VISIT_UPWARD:
|
||||
|
||||
while (Op)
|
||||
@ -1161,7 +1208,6 @@ TrWalkParseTree (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ASL_WALK_VISIT_TWICE:
|
||||
|
||||
while (Op)
|
||||
|
@ -81,16 +81,17 @@
|
||||
|
||||
typedef struct asl_method_info
|
||||
{
|
||||
UINT8 NumArguments;
|
||||
UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS];
|
||||
UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS];
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
struct asl_method_info *Next;
|
||||
UINT32 ValidArgTypes[ACPI_METHOD_NUM_ARGS];
|
||||
UINT32 ValidReturnTypes;
|
||||
UINT32 NumReturnNoValue;
|
||||
UINT32 NumReturnWithValue;
|
||||
ACPI_PARSE_OBJECT *Op;
|
||||
struct asl_method_info *Next;
|
||||
UINT8 NumArguments;
|
||||
UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS];
|
||||
UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS];
|
||||
UINT8 HasBeenTyped;
|
||||
UINT8 ShouldBeSerialized;
|
||||
|
||||
} ASL_METHOD_INFO;
|
||||
|
||||
|
@ -956,6 +956,7 @@ UtStrtoul64 (
|
||||
case 8:
|
||||
case 10:
|
||||
case 16:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1090,19 +1091,24 @@ UtStrtoul64 (
|
||||
switch (Base)
|
||||
{
|
||||
case 8:
|
||||
|
||||
Status = AE_BAD_OCTAL_CONSTANT;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
|
||||
Status = AE_BAD_DECIMAL_CONSTANT;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
|
||||
Status = AE_BAD_HEX_CONSTANT;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Base validated above */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -122,6 +122,7 @@ AnMethodTypingWalkEnd (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -176,6 +177,7 @@ AnOperandTypecheckWalkEnd (
|
||||
return (AE_OK);
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -252,6 +254,7 @@ AnOperandTypecheckWalkEnd (
|
||||
return (AE_OK);
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -379,11 +382,13 @@ AnOperandTypecheckWalkEnd (
|
||||
break;
|
||||
|
||||
case PARSEOP_DEBUG:
|
||||
|
||||
break;
|
||||
|
||||
case PARSEOP_REFOF:
|
||||
case PARSEOP_INDEX:
|
||||
default:
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
@ -391,6 +396,7 @@ AnOperandTypecheckWalkEnd (
|
||||
|
||||
case ARGI_INTEGER:
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -434,6 +440,7 @@ AnOperandTypecheckWalkEnd (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -520,9 +527,11 @@ AnOtherSemanticAnalysisWalkBegin (
|
||||
case PARSEOP_ACQUIRE:
|
||||
case PARSEOP_WAIT:
|
||||
case PARSEOP_LOADTABLE:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AslError (ASL_ERROR, ASL_MSG_RESULT_NOT_USED,
|
||||
Op, Op->Asl.ExternalName);
|
||||
break;
|
||||
@ -661,6 +670,7 @@ AnOtherSemanticAnalysisWalkBegin (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -533,27 +533,33 @@ XfNamespaceLocateBegin (
|
||||
break;
|
||||
|
||||
case AML_CREATE_BIT_FIELD_OP:
|
||||
|
||||
FieldBitLength = 1;
|
||||
break;
|
||||
|
||||
case AML_CREATE_BYTE_FIELD_OP:
|
||||
case AML_INDEX_OP:
|
||||
|
||||
FieldBitLength = 8;
|
||||
break;
|
||||
|
||||
case AML_CREATE_WORD_FIELD_OP:
|
||||
|
||||
FieldBitLength = 16;
|
||||
break;
|
||||
|
||||
case AML_CREATE_DWORD_FIELD_OP:
|
||||
|
||||
FieldBitLength = 32;
|
||||
break;
|
||||
|
||||
case AML_CREATE_QWORD_FIELD_OP:
|
||||
|
||||
FieldBitLength = 64;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
FieldBitLength = 0;
|
||||
break;
|
||||
}
|
||||
@ -595,6 +601,7 @@ XfNamespaceLocateBegin (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -728,18 +735,22 @@ XfNamespaceLocateBegin (
|
||||
case AML_FIELD_ACCESS_BYTE:
|
||||
case AML_FIELD_ACCESS_BUFFER:
|
||||
default:
|
||||
|
||||
MinimumLength = 1;
|
||||
break;
|
||||
|
||||
case AML_FIELD_ACCESS_WORD:
|
||||
|
||||
MinimumLength = 2;
|
||||
break;
|
||||
|
||||
case AML_FIELD_ACCESS_DWORD:
|
||||
|
||||
MinimumLength = 4;
|
||||
break;
|
||||
|
||||
case AML_FIELD_ACCESS_QWORD:
|
||||
|
||||
MinimumLength = 8;
|
||||
break;
|
||||
}
|
||||
@ -784,6 +795,7 @@ XfNamespaceLocateBegin (
|
||||
default:
|
||||
|
||||
/* Nothing to do for other address spaces */
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -127,18 +127,22 @@ DtDoOperator (
|
||||
switch (Operator)
|
||||
{
|
||||
case EXPOP_ONES_COMPLIMENT:
|
||||
|
||||
Result = ~RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_LOGICAL_NOT:
|
||||
|
||||
Result = !RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_MULTIPLY:
|
||||
|
||||
Result = LeftValue * RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_DIVIDE:
|
||||
|
||||
if (!RightValue)
|
||||
{
|
||||
DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
|
||||
@ -149,6 +153,7 @@ DtDoOperator (
|
||||
break;
|
||||
|
||||
case EXPOP_MODULO:
|
||||
|
||||
if (!RightValue)
|
||||
{
|
||||
DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
|
||||
@ -163,58 +168,72 @@ DtDoOperator (
|
||||
break;
|
||||
|
||||
case EXPOP_SUBTRACT:
|
||||
|
||||
Result = LeftValue - RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_SHIFT_RIGHT:
|
||||
|
||||
Result = LeftValue >> RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_SHIFT_LEFT:
|
||||
|
||||
Result = LeftValue << RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_LESS:
|
||||
|
||||
Result = LeftValue < RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_GREATER:
|
||||
|
||||
Result = LeftValue > RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_LESS_EQUAL:
|
||||
|
||||
Result = LeftValue <= RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_GREATER_EQUAL:
|
||||
|
||||
Result = LeftValue >= RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_EQUAL:
|
||||
|
||||
Result = LeftValue == RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_NOT_EQUAL:
|
||||
|
||||
Result = LeftValue != RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_AND:
|
||||
|
||||
Result = LeftValue & RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_XOR:
|
||||
|
||||
Result = LeftValue ^ RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_OR:
|
||||
|
||||
Result = LeftValue | RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_LOGICAL_AND:
|
||||
|
||||
Result = LeftValue && RightValue;
|
||||
break;
|
||||
|
||||
case EXPOP_LOGICAL_OR:
|
||||
|
||||
Result = LeftValue || RightValue;
|
||||
break;
|
||||
|
||||
|
@ -104,14 +104,17 @@ DtCompileOneField (
|
||||
switch (Type)
|
||||
{
|
||||
case DT_FIELD_TYPE_INTEGER:
|
||||
|
||||
DtCompileInteger (Buffer, Field, ByteLength, Flags);
|
||||
break;
|
||||
|
||||
case DT_FIELD_TYPE_STRING:
|
||||
|
||||
DtCompileString (Buffer, Field, ByteLength);
|
||||
break;
|
||||
|
||||
case DT_FIELD_TYPE_UUID:
|
||||
|
||||
Status = DtCompileUuid (Buffer, Field, ByteLength);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
@ -121,17 +124,21 @@ DtCompileOneField (
|
||||
/* Fall through. */
|
||||
|
||||
case DT_FIELD_TYPE_BUFFER:
|
||||
|
||||
DtCompileBuffer (Buffer, Field->Value, Field, ByteLength);
|
||||
break;
|
||||
|
||||
case DT_FIELD_TYPE_UNICODE:
|
||||
|
||||
DtCompileUnicode (Buffer, Field, ByteLength);
|
||||
break;
|
||||
|
||||
case DT_FIELD_TYPE_DEVICE_PATH:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid field type");
|
||||
break;
|
||||
}
|
||||
@ -382,10 +389,12 @@ DtNormalizeBuffer (
|
||||
case ']':
|
||||
case ' ':
|
||||
case ',':
|
||||
|
||||
Separator = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
if (Separator)
|
||||
{
|
||||
/* Insert blank as the standard separator */
|
||||
|
@ -426,7 +426,7 @@ DtGetNextLine (
|
||||
UINT32 State = DT_NORMAL_TEXT;
|
||||
UINT32 CurrentLineOffset;
|
||||
UINT32 i;
|
||||
char c;
|
||||
int c;
|
||||
|
||||
|
||||
for (i = 0; ;)
|
||||
@ -440,7 +440,7 @@ DtGetNextLine (
|
||||
UtExpandLineBuffers ();
|
||||
}
|
||||
|
||||
c = (char) getc (Handle);
|
||||
c = getc (Handle);
|
||||
if (c == EOF)
|
||||
{
|
||||
switch (State)
|
||||
@ -452,6 +452,7 @@ DtGetNextLine (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -479,14 +480,16 @@ DtGetNextLine (
|
||||
|
||||
/* Normal text, insert char into line buffer */
|
||||
|
||||
Gbl_CurrentLineBuffer[i] = c;
|
||||
Gbl_CurrentLineBuffer[i] = (char) c;
|
||||
switch (c)
|
||||
{
|
||||
case '/':
|
||||
|
||||
State = DT_START_COMMENT;
|
||||
break;
|
||||
|
||||
case '"':
|
||||
|
||||
State = DT_START_QUOTED_STRING;
|
||||
LineNotAllBlanks = TRUE;
|
||||
i++;
|
||||
@ -501,6 +504,7 @@ DtGetNextLine (
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
|
||||
CurrentLineOffset = Gbl_NextLineOffset;
|
||||
Gbl_NextLineOffset = (UINT32) ftell (Handle);
|
||||
Gbl_CurrentLineNumber++;
|
||||
@ -527,6 +531,7 @@ DtGetNextLine (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
if (c != ' ')
|
||||
{
|
||||
LineNotAllBlanks = TRUE;
|
||||
@ -541,26 +546,30 @@ DtGetNextLine (
|
||||
|
||||
/* Insert raw chars until end of quoted string */
|
||||
|
||||
Gbl_CurrentLineBuffer[i] = c;
|
||||
Gbl_CurrentLineBuffer[i] = (char) c;
|
||||
i++;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case '"':
|
||||
|
||||
State = DT_NORMAL_TEXT;
|
||||
break;
|
||||
|
||||
case '\\':
|
||||
|
||||
State = DT_ESCAPE_SEQUENCE;
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
|
||||
AcpiOsPrintf ("ERROR at line %u: Unterminated quoted string\n",
|
||||
Gbl_CurrentLineNumber++);
|
||||
State = DT_NORMAL_TEXT;
|
||||
break;
|
||||
|
||||
default: /* Get next character */
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -569,7 +578,7 @@ DtGetNextLine (
|
||||
|
||||
/* Just copy the escaped character. TBD: sufficient for table compiler? */
|
||||
|
||||
Gbl_CurrentLineBuffer[i] = c;
|
||||
Gbl_CurrentLineBuffer[i] = (char) c;
|
||||
i++;
|
||||
State = DT_START_QUOTED_STRING;
|
||||
break;
|
||||
@ -581,21 +590,24 @@ DtGetNextLine (
|
||||
switch (c)
|
||||
{
|
||||
case '*':
|
||||
|
||||
State = DT_SLASH_ASTERISK_COMMENT;
|
||||
break;
|
||||
|
||||
case '/':
|
||||
|
||||
State = DT_SLASH_SLASH_COMMENT;
|
||||
break;
|
||||
|
||||
default: /* Not a comment */
|
||||
|
||||
i++; /* Save the preceding slash */
|
||||
if (i >= Gbl_LineBufferSize)
|
||||
{
|
||||
UtExpandLineBuffers ();
|
||||
}
|
||||
|
||||
Gbl_CurrentLineBuffer[i] = c;
|
||||
Gbl_CurrentLineBuffer[i] = (char) c;
|
||||
i++;
|
||||
State = DT_NORMAL_TEXT;
|
||||
break;
|
||||
@ -609,15 +621,18 @@ DtGetNextLine (
|
||||
switch (c)
|
||||
{
|
||||
case '\n':
|
||||
|
||||
Gbl_NextLineOffset = (UINT32) ftell (Handle);
|
||||
Gbl_CurrentLineNumber++;
|
||||
break;
|
||||
|
||||
case '*':
|
||||
|
||||
State = DT_END_COMMENT;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -642,20 +657,24 @@ DtGetNextLine (
|
||||
switch (c)
|
||||
{
|
||||
case '/':
|
||||
|
||||
State = DT_NORMAL_TEXT;
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
|
||||
CurrentLineOffset = Gbl_NextLineOffset;
|
||||
Gbl_NextLineOffset = (UINT32) ftell (Handle);
|
||||
Gbl_CurrentLineNumber++;
|
||||
break;
|
||||
|
||||
case '*':
|
||||
|
||||
/* Consume all adjacent asterisks */
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
State = DT_SLASH_ASTERISK_COMMENT;
|
||||
break;
|
||||
}
|
||||
@ -694,6 +713,7 @@ DtGetNextLine (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, "Unknown input state");
|
||||
return (ASL_EOF);
|
||||
}
|
||||
|
@ -312,14 +312,17 @@ DtGetSubtableLength (
|
||||
switch (Info->Opcode)
|
||||
{
|
||||
case ACPI_DMT_GAS:
|
||||
|
||||
Step = 5;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_HESTNTFY:
|
||||
|
||||
Step = 9;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Step = 1;
|
||||
break;
|
||||
}
|
||||
|
@ -280,26 +280,32 @@ DtCompileAsf (
|
||||
switch (AsfTable->Header.Type & 0x7F) /* Mask off top bit */
|
||||
{
|
||||
case ACPI_ASF_TYPE_INFO:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf0;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_ALERT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf1;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_CONTROL:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf2;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_BOOT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf3;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_ADDRESS:
|
||||
|
||||
InfoTable = AcpiDmTableInfoAsf4;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASF!");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -316,10 +322,12 @@ DtCompileAsf (
|
||||
switch (AsfTable->Header.Type & 0x7F) /* Mask off top bit */
|
||||
{
|
||||
case ACPI_ASF_TYPE_INFO:
|
||||
|
||||
DataInfoTable = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_ALERT:
|
||||
|
||||
DataInfoTable = AcpiDmTableInfoAsf1a;
|
||||
DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT,
|
||||
ACPI_SUB_PTR (UINT8, Subtable->Buffer,
|
||||
@ -327,6 +335,7 @@ DtCompileAsf (
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_CONTROL:
|
||||
|
||||
DataInfoTable = AcpiDmTableInfoAsf2a;
|
||||
DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE,
|
||||
ACPI_SUB_PTR (UINT8, Subtable->Buffer,
|
||||
@ -334,10 +343,12 @@ DtCompileAsf (
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_BOOT:
|
||||
|
||||
DataInfoTable = NULL;
|
||||
break;
|
||||
|
||||
case ACPI_ASF_TYPE_ADDRESS:
|
||||
|
||||
DataInfoTable = TableInfoAsfAddress;
|
||||
DataCount = ACPI_CAST_PTR (ACPI_ASF_ADDRESS,
|
||||
ACPI_SUB_PTR (UINT8, Subtable->Buffer,
|
||||
@ -345,6 +356,7 @@ DtCompileAsf (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASF!");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -574,18 +586,27 @@ DtCompileDmar (
|
||||
switch (DmarHeader->Type)
|
||||
{
|
||||
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar0;
|
||||
break;
|
||||
|
||||
case ACPI_DMAR_TYPE_RESERVED_MEMORY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar1;
|
||||
break;
|
||||
|
||||
case ACPI_DMAR_TYPE_ATSR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar2;
|
||||
break;
|
||||
|
||||
case ACPI_DMAR_HARDWARE_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoDmar3;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "DMAR");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -810,14 +831,17 @@ DtCompileFpdt (
|
||||
switch (FpdtHeader->Type)
|
||||
{
|
||||
case ACPI_FPDT_TYPE_BOOT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoFpdt0;
|
||||
break;
|
||||
|
||||
case ACPI_FPDT_TYPE_S3PERF:
|
||||
|
||||
InfoTable = AcpiDmTableInfoFpdt1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "FPDT");
|
||||
return (AE_ERROR);
|
||||
break;
|
||||
@ -884,34 +908,42 @@ DtCompileHest (
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_HEST_TYPE_IA32_CHECK:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest0;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest1;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_IA32_NMI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest2;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_AER_ROOT_PORT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest6;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_AER_ENDPOINT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest7;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_AER_BRIDGE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest8;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_GENERIC_ERROR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoHest9;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Cannot continue on unknown type */
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "HEST");
|
||||
@ -933,16 +965,19 @@ DtCompileHest (
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_HEST_TYPE_IA32_CHECK:
|
||||
|
||||
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK,
|
||||
Subtable->Buffer))->NumHardwareBanks;
|
||||
break;
|
||||
|
||||
case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
|
||||
|
||||
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED,
|
||||
Subtable->Buffer))->NumHardwareBanks;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1019,16 +1054,19 @@ DtCompileIvrs (
|
||||
switch (IvrsHeader->Type)
|
||||
{
|
||||
case ACPI_IVRS_TYPE_HARDWARE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIvrs0;
|
||||
break;
|
||||
|
||||
case ACPI_IVRS_TYPE_MEMORY1:
|
||||
case ACPI_IVRS_TYPE_MEMORY2:
|
||||
case ACPI_IVRS_TYPE_MEMORY3:
|
||||
|
||||
InfoTable = AcpiDmTableInfoIvrs1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -1088,6 +1126,7 @@ DtCompileIvrs (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart,
|
||||
"IVRS Device Entry");
|
||||
return (AE_ERROR);
|
||||
@ -1165,45 +1204,72 @@ DtCompileMadt (
|
||||
switch (MadtHeader->Type)
|
||||
{
|
||||
case ACPI_MADT_TYPE_LOCAL_APIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt0;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_IO_APIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt1;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt2;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_NMI_SOURCE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt3;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt4;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt5;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_IO_SAPIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt6;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_SAPIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt7;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_INTERRUPT_SOURCE:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt8;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_X2APIC:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt9;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt10;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt11;
|
||||
break;
|
||||
|
||||
case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
|
||||
|
||||
InfoTable = AcpiDmTableInfoMadt12;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -1665,14 +1731,17 @@ DtCompileS3pt (
|
||||
switch (S3ptHeader->Type)
|
||||
{
|
||||
case ACPI_S3PT_TYPE_RESUME:
|
||||
|
||||
InfoTable = AcpiDmTableInfoS3pt0;
|
||||
break;
|
||||
|
||||
case ACPI_S3PT_TYPE_SUSPEND:
|
||||
|
||||
InfoTable = AcpiDmTableInfoS3pt1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "S3PT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -1736,12 +1805,17 @@ DtCompileSlic (
|
||||
switch (SlicHeader->Type)
|
||||
{
|
||||
case ACPI_SLIC_TYPE_PUBLIC_KEY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSlic0;
|
||||
break;
|
||||
|
||||
case ACPI_SLIC_TYPE_WINDOWS_MARKER:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSlic1;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SLIC");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
@ -1871,15 +1945,22 @@ DtCompileSrat (
|
||||
switch (SratHeader->Type)
|
||||
{
|
||||
case ACPI_SRAT_TYPE_CPU_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSrat0;
|
||||
break;
|
||||
|
||||
case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSrat1;
|
||||
break;
|
||||
|
||||
case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
|
||||
|
||||
InfoTable = AcpiDmTableInfoSrat2;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
|
||||
return (AE_ERROR);
|
||||
}
|
||||
|
@ -82,18 +82,11 @@ DtError (
|
||||
char *ExtraMessage)
|
||||
{
|
||||
|
||||
switch (Level)
|
||||
{
|
||||
case ASL_WARNING2:
|
||||
case ASL_WARNING3:
|
||||
if (Gbl_WarningLevel < Level)
|
||||
{
|
||||
return;
|
||||
}
|
||||
break;
|
||||
/* Check if user wants to ignore this exception */
|
||||
|
||||
default:
|
||||
break;
|
||||
if (AslIsExceptionDisabled (Level, MessageId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (FieldObject)
|
||||
@ -140,6 +133,7 @@ DtNameError (
|
||||
{
|
||||
case ASL_WARNING2:
|
||||
case ASL_WARNING3:
|
||||
|
||||
if (Gbl_WarningLevel < Level)
|
||||
{
|
||||
return;
|
||||
@ -147,6 +141,7 @@ DtNameError (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -387,6 +382,7 @@ DtGetFieldType (
|
||||
case ACPI_DMT_FLAGS1:
|
||||
case ACPI_DMT_FLAGS2:
|
||||
case ACPI_DMT_FLAGS4:
|
||||
|
||||
Type = DT_FIELD_TYPE_FLAG;
|
||||
break;
|
||||
|
||||
@ -395,6 +391,7 @@ DtGetFieldType (
|
||||
case ACPI_DMT_NAME6:
|
||||
case ACPI_DMT_NAME8:
|
||||
case ACPI_DMT_STRING:
|
||||
|
||||
Type = DT_FIELD_TYPE_STRING;
|
||||
break;
|
||||
|
||||
@ -403,31 +400,38 @@ DtGetFieldType (
|
||||
case ACPI_DMT_BUF16:
|
||||
case ACPI_DMT_BUF128:
|
||||
case ACPI_DMT_PCI_PATH:
|
||||
|
||||
Type = DT_FIELD_TYPE_BUFFER;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_GAS:
|
||||
case ACPI_DMT_HESTNTFY:
|
||||
|
||||
Type = DT_FIELD_TYPE_INLINE_SUBTABLE;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UNICODE:
|
||||
|
||||
Type = DT_FIELD_TYPE_UNICODE;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UUID:
|
||||
|
||||
Type = DT_FIELD_TYPE_UUID;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_DEVICE_PATH:
|
||||
|
||||
Type = DT_FIELD_TYPE_DEVICE_PATH;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_LABEL:
|
||||
|
||||
Type = DT_FIELD_TYPE_LABEL;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Type = DT_FIELD_TYPE_INTEGER;
|
||||
break;
|
||||
}
|
||||
@ -517,6 +521,7 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_FLAGS4:
|
||||
case ACPI_DMT_LABEL:
|
||||
case ACPI_DMT_EXTRA_TEXT:
|
||||
|
||||
ByteLength = 0;
|
||||
break;
|
||||
|
||||
@ -535,6 +540,7 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_EINJINST:
|
||||
case ACPI_DMT_ERSTACT:
|
||||
case ACPI_DMT_ERSTINST:
|
||||
|
||||
ByteLength = 1;
|
||||
break;
|
||||
|
||||
@ -542,10 +548,12 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_DMAR:
|
||||
case ACPI_DMT_HEST:
|
||||
case ACPI_DMT_PCI_PATH:
|
||||
|
||||
ByteLength = 2;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT24:
|
||||
|
||||
ByteLength = 3;
|
||||
break;
|
||||
|
||||
@ -553,29 +561,35 @@ DtGetFieldLength (
|
||||
case ACPI_DMT_NAME4:
|
||||
case ACPI_DMT_SLIC:
|
||||
case ACPI_DMT_SIG:
|
||||
|
||||
ByteLength = 4;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT40:
|
||||
|
||||
ByteLength = 5;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT48:
|
||||
case ACPI_DMT_NAME6:
|
||||
|
||||
ByteLength = 6;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT56:
|
||||
case ACPI_DMT_BUF7:
|
||||
|
||||
ByteLength = 7;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UINT64:
|
||||
case ACPI_DMT_NAME8:
|
||||
|
||||
ByteLength = 8;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_STRING:
|
||||
|
||||
Value = DtGetFieldValue (Field);
|
||||
if (Value)
|
||||
{
|
||||
@ -591,14 +605,17 @@ DtGetFieldLength (
|
||||
break;
|
||||
|
||||
case ACPI_DMT_GAS:
|
||||
|
||||
ByteLength = sizeof (ACPI_GENERIC_ADDRESS);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_HESTNTFY:
|
||||
|
||||
ByteLength = sizeof (ACPI_HEST_NOTIFY);
|
||||
break;
|
||||
|
||||
case ACPI_DMT_BUFFER:
|
||||
|
||||
Value = DtGetFieldValue (Field);
|
||||
if (Value)
|
||||
{
|
||||
@ -615,14 +632,17 @@ DtGetFieldLength (
|
||||
|
||||
case ACPI_DMT_BUF16:
|
||||
case ACPI_DMT_UUID:
|
||||
|
||||
ByteLength = 16;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_BUF128:
|
||||
|
||||
ByteLength = 128;
|
||||
break;
|
||||
|
||||
case ACPI_DMT_UNICODE:
|
||||
|
||||
Value = DtGetFieldValue (Field);
|
||||
|
||||
/* TBD: error if Value is NULL? (as below?) */
|
||||
@ -631,6 +651,7 @@ DtGetFieldLength (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid table opcode");
|
||||
return (0);
|
||||
}
|
||||
|
@ -477,6 +477,7 @@ PrDoDirective (
|
||||
switch (Directive)
|
||||
{
|
||||
case PR_DIRECTIVE_ELIF:
|
||||
|
||||
*IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock);
|
||||
if (*IgnoringThisCodeBlock == TRUE)
|
||||
{
|
||||
@ -493,10 +494,12 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_ELSE:
|
||||
|
||||
*IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock);
|
||||
return;
|
||||
|
||||
case PR_DIRECTIVE_ENDIF:
|
||||
|
||||
*IgnoringThisCodeBlock = FALSE;
|
||||
Gbl_IfDepth--;
|
||||
if (Gbl_IfDepth < 0)
|
||||
@ -508,6 +511,7 @@ PrDoDirective (
|
||||
return;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -590,6 +594,7 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_ERROR:
|
||||
|
||||
/* TBD compiler should abort */
|
||||
/* Note: No macro expansion */
|
||||
|
||||
@ -598,6 +603,7 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_IF:
|
||||
|
||||
TokenOffset = Token - Gbl_MainTokenBuffer;
|
||||
|
||||
/* Need to expand #define macros in the expression string first */
|
||||
@ -623,6 +629,7 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_IFDEF:
|
||||
|
||||
if (!PrMatchDefine (Token))
|
||||
{
|
||||
*IgnoringThisCodeBlock = TRUE;
|
||||
@ -635,6 +642,7 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_IFNDEF:
|
||||
|
||||
if (PrMatchDefine (Token))
|
||||
{
|
||||
*IgnoringThisCodeBlock = TRUE;
|
||||
@ -647,6 +655,7 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_INCLUDE:
|
||||
|
||||
Token = PrGetNextToken (NULL, " \"<>", Next);
|
||||
if (!Token)
|
||||
{
|
||||
@ -661,6 +670,7 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_LINE:
|
||||
|
||||
TokenOffset = Token - Gbl_MainTokenBuffer;
|
||||
|
||||
Status = PrResolveIntegerExpression (
|
||||
@ -686,26 +696,40 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_PRAGMA:
|
||||
/* Only "#pragma message" supported at this time */
|
||||
|
||||
if (strcmp (Token, "message"))
|
||||
if (!strcmp (Token, "disable"))
|
||||
{
|
||||
Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
|
||||
if (!Token)
|
||||
{
|
||||
goto SyntaxError;
|
||||
}
|
||||
|
||||
TokenOffset = Token - Gbl_MainTokenBuffer;
|
||||
AslDisableException (&Gbl_CurrentLineBuffer[TokenOffset]);
|
||||
}
|
||||
else if (!strcmp (Token, "message"))
|
||||
{
|
||||
Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
|
||||
if (!Token)
|
||||
{
|
||||
goto SyntaxError;
|
||||
}
|
||||
|
||||
TokenOffset = Token - Gbl_MainTokenBuffer;
|
||||
AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]);
|
||||
}
|
||||
else
|
||||
{
|
||||
PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA,
|
||||
THIS_TOKEN_OFFSET (Token));
|
||||
return;
|
||||
}
|
||||
|
||||
Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
|
||||
if (!Token)
|
||||
{
|
||||
goto SyntaxError;
|
||||
}
|
||||
|
||||
TokenOffset = Token - Gbl_MainTokenBuffer;
|
||||
AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]);
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_UNDEF:
|
||||
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
|
||||
"#undef: %s\n", Gbl_CurrentLineNumber, Token);
|
||||
|
||||
@ -713,11 +737,13 @@ PrDoDirective (
|
||||
break;
|
||||
|
||||
case PR_DIRECTIVE_WARNING:
|
||||
|
||||
PrError (ASL_WARNING, ASL_MSG_ERROR_DIRECTIVE,
|
||||
THIS_TOKEN_OFFSET (Token));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Should never get here */
|
||||
DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
|
||||
"Unrecognized directive: %u\n",
|
||||
|
@ -361,22 +361,27 @@ AcpiDbDisplayTableInfo (
|
||||
switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK)
|
||||
{
|
||||
case ACPI_TABLE_ORIGIN_UNKNOWN:
|
||||
|
||||
AcpiOsPrintf ("Unknown ");
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_ORIGIN_MAPPED:
|
||||
|
||||
AcpiOsPrintf ("Mapped ");
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_ORIGIN_ALLOCATED:
|
||||
|
||||
AcpiOsPrintf ("Allocated ");
|
||||
break;
|
||||
|
||||
case ACPI_TABLE_ORIGIN_OVERRIDE:
|
||||
|
||||
AcpiOsPrintf ("Override ");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("INVALID ");
|
||||
break;
|
||||
}
|
||||
|
@ -304,20 +304,24 @@ AcpiDbConvertToObject (
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
Object->Type = ACPI_TYPE_STRING;
|
||||
Object->String.Pointer = String;
|
||||
Object->String.Length = (UINT32) ACPI_STRLEN (String);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
Status = AcpiDbConvertToBuffer (String, Object);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
Status = AcpiDbConvertToPackage (String, Object);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Object->Type = ACPI_TYPE_INTEGER;
|
||||
Status = AcpiUtStrtoul64 (String, 16, &Object->Integer.Value);
|
||||
break;
|
||||
|
@ -265,7 +265,6 @@ AcpiDbDecodeAndDisplayObject (
|
||||
Node = ObjPtr;
|
||||
goto DumpNode;
|
||||
|
||||
|
||||
case ACPI_DESC_TYPE_OPERAND:
|
||||
|
||||
/* This is a ACPI OPERAND OBJECT */
|
||||
@ -282,7 +281,6 @@ AcpiDbDecodeAndDisplayObject (
|
||||
AcpiExDumpObjectDescriptor (ObjPtr, 1);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_DESC_TYPE_PARSER:
|
||||
|
||||
/* This is a Parser Op object */
|
||||
@ -299,7 +297,6 @@ AcpiDbDecodeAndDisplayObject (
|
||||
AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* Is not a recognizeable object */
|
||||
@ -446,6 +443,7 @@ AcpiDbDisplayMethodInfo (
|
||||
switch (OpInfo->Class)
|
||||
{
|
||||
case AML_CLASS_ARGUMENT:
|
||||
|
||||
if (CountRemaining)
|
||||
{
|
||||
NumRemainingOperands++;
|
||||
@ -455,11 +453,13 @@ AcpiDbDisplayMethodInfo (
|
||||
break;
|
||||
|
||||
case AML_CLASS_UNKNOWN:
|
||||
|
||||
/* Bad opcode or ASCII character */
|
||||
|
||||
continue;
|
||||
|
||||
default:
|
||||
|
||||
if (CountRemaining)
|
||||
{
|
||||
NumRemainingOperators++;
|
||||
@ -931,15 +931,21 @@ AcpiDbDisplayGpes (
|
||||
switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK)
|
||||
{
|
||||
case ACPI_GPE_DISPATCH_NONE:
|
||||
|
||||
AcpiOsPrintf ("NotUsed");
|
||||
break;
|
||||
|
||||
case ACPI_GPE_DISPATCH_METHOD:
|
||||
|
||||
AcpiOsPrintf ("Method");
|
||||
break;
|
||||
case ACPI_GPE_DISPATCH_HANDLER:
|
||||
|
||||
AcpiOsPrintf ("Handler");
|
||||
break;
|
||||
|
||||
case ACPI_GPE_DISPATCH_NOTIFY:
|
||||
|
||||
Count = 0;
|
||||
Notify = GpeEventInfo->Dispatch.NotifyList;
|
||||
while (Notify)
|
||||
@ -949,7 +955,9 @@ AcpiDbDisplayGpes (
|
||||
}
|
||||
AcpiOsPrintf ("Implicit Notify on %u devices", Count);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("UNKNOWN: %X",
|
||||
GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK);
|
||||
break;
|
||||
|
@ -109,6 +109,7 @@ AcpiDbDeleteObjects (
|
||||
switch (Objects[i].Type)
|
||||
{
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
ACPI_FREE (Objects[i].Buffer.Pointer);
|
||||
break;
|
||||
|
||||
@ -125,6 +126,7 @@ AcpiDbDeleteObjects (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -54,12 +54,12 @@
|
||||
|
||||
#define HI_NO_HISTORY 0
|
||||
#define HI_RECORD_HISTORY 1
|
||||
#define HISTORY_SIZE 20
|
||||
#define HISTORY_SIZE 40
|
||||
|
||||
|
||||
typedef struct HistoryInfo
|
||||
{
|
||||
char Command[80];
|
||||
char *Command;
|
||||
UINT32 CmdNum;
|
||||
|
||||
} HISTORY_INFO;
|
||||
@ -88,13 +88,35 @@ void
|
||||
AcpiDbAddToHistory (
|
||||
char *CommandLine)
|
||||
{
|
||||
UINT16 CmdLen;
|
||||
UINT16 BufferLen;
|
||||
|
||||
/* Put command into the next available slot */
|
||||
|
||||
CmdLen = (UINT16) ACPI_STRLEN (CommandLine);
|
||||
if (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command != NULL)
|
||||
{
|
||||
BufferLen = (UINT16) ACPI_STRLEN (
|
||||
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command);
|
||||
if (CmdLen > BufferLen)
|
||||
{
|
||||
AcpiOsFree (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].
|
||||
Command);
|
||||
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command =
|
||||
AcpiOsAllocate (CmdLen + 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command =
|
||||
AcpiOsAllocate (CmdLen + 1);
|
||||
}
|
||||
|
||||
ACPI_STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command,
|
||||
CommandLine);
|
||||
|
||||
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum = AcpiGbl_NextCmdNum;
|
||||
AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum =
|
||||
AcpiGbl_NextCmdNum;
|
||||
|
||||
/* Adjust indexes */
|
||||
|
||||
@ -148,8 +170,12 @@ AcpiDbDisplayHistory (
|
||||
|
||||
for (i = 0; i < AcpiGbl_NumHistory; i++)
|
||||
{
|
||||
AcpiOsPrintf ("%ld %s\n", AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
|
||||
AcpiGbl_HistoryBuffer[HistoryIndex].Command);
|
||||
if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
|
||||
{
|
||||
AcpiOsPrintf ("%3ld %s\n",
|
||||
AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
|
||||
AcpiGbl_HistoryBuffer[HistoryIndex].Command);
|
||||
}
|
||||
|
||||
HistoryIndex++;
|
||||
if (HistoryIndex >= HISTORY_SIZE)
|
||||
@ -199,7 +225,7 @@ AcpiDbGetFromHistory (
|
||||
{
|
||||
if (AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum == CmdNum)
|
||||
{
|
||||
/* Found the commnad, return it */
|
||||
/* Found the command, return it */
|
||||
|
||||
return (AcpiGbl_HistoryBuffer[HistoryIndex].Command);
|
||||
}
|
||||
|
@ -753,6 +753,7 @@ AcpiDbCommandDispatch (
|
||||
switch (CommandIndex)
|
||||
{
|
||||
case CMD_NULL:
|
||||
|
||||
if (Op)
|
||||
{
|
||||
return (AE_OK);
|
||||
@ -768,41 +769,50 @@ AcpiDbCommandDispatch (
|
||||
|
||||
case CMD_ARGS:
|
||||
case CMD_ARGUMENTS:
|
||||
|
||||
AcpiDbDisplayArguments ();
|
||||
break;
|
||||
|
||||
case CMD_BATCH:
|
||||
|
||||
AcpiDbBatchExecute (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_BREAKPOINT:
|
||||
|
||||
AcpiDbSetMethodBreakpoint (AcpiGbl_DbArgs[1], WalkState, Op);
|
||||
break;
|
||||
|
||||
case CMD_BUSINFO:
|
||||
|
||||
AcpiDbGetBusInfo ();
|
||||
break;
|
||||
|
||||
case CMD_CALL:
|
||||
|
||||
AcpiDbSetMethodCallBreakpoint (Op);
|
||||
Status = AE_OK;
|
||||
break;
|
||||
|
||||
case CMD_CLOSE:
|
||||
|
||||
AcpiDbCloseDebugFile ();
|
||||
break;
|
||||
|
||||
case CMD_DEBUG:
|
||||
|
||||
AcpiDbExecute (AcpiGbl_DbArgs[1],
|
||||
&AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_SINGLE_STEP);
|
||||
break;
|
||||
|
||||
case CMD_DISASSEMBLE:
|
||||
case CMD_DISASM:
|
||||
|
||||
(void) AcpiDbDisassembleMethod (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_DUMP:
|
||||
|
||||
AcpiDbDecodeAndDisplayObject (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
|
||||
break;
|
||||
|
||||
@ -819,45 +829,55 @@ AcpiDbCommandDispatch (
|
||||
break;
|
||||
|
||||
case CMD_EVENT:
|
||||
|
||||
AcpiOsPrintf ("Event command not implemented\n");
|
||||
break;
|
||||
|
||||
case CMD_EVALUATE:
|
||||
case CMD_EXECUTE:
|
||||
|
||||
AcpiDbExecute (AcpiGbl_DbArgs[1],
|
||||
&AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_NO_SINGLE_STEP);
|
||||
break;
|
||||
|
||||
case CMD_FIND:
|
||||
|
||||
Status = AcpiDbFindNameInNamespace (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_GO:
|
||||
|
||||
AcpiGbl_CmSingleStep = FALSE;
|
||||
return (AE_OK);
|
||||
|
||||
case CMD_GPE:
|
||||
|
||||
AcpiDbGenerateGpe (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
|
||||
break;
|
||||
|
||||
case CMD_GPES:
|
||||
|
||||
AcpiDbDisplayGpes ();
|
||||
break;
|
||||
|
||||
case CMD_HANDLERS:
|
||||
|
||||
AcpiDbDisplayHandlers ();
|
||||
break;
|
||||
|
||||
case CMD_HELP:
|
||||
case CMD_HELP2:
|
||||
|
||||
AcpiDbDisplayHelp (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_HISTORY:
|
||||
|
||||
AcpiDbDisplayHistory ();
|
||||
break;
|
||||
|
||||
case CMD_HISTORY_EXE:
|
||||
case CMD_HISTORY_EXE: /* ! command */
|
||||
|
||||
CommandLine = AcpiDbGetFromHistory (AcpiGbl_DbArgs[1]);
|
||||
if (!CommandLine)
|
||||
{
|
||||
@ -867,7 +887,8 @@ AcpiDbCommandDispatch (
|
||||
Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op);
|
||||
return (Status);
|
||||
|
||||
case CMD_HISTORY_LAST:
|
||||
case CMD_HISTORY_LAST: /* !! command */
|
||||
|
||||
CommandLine = AcpiDbGetFromHistory (NULL);
|
||||
if (!CommandLine)
|
||||
{
|
||||
@ -878,14 +899,17 @@ AcpiDbCommandDispatch (
|
||||
return (Status);
|
||||
|
||||
case CMD_INFORMATION:
|
||||
|
||||
AcpiDbDisplayMethodInfo (Op);
|
||||
break;
|
||||
|
||||
case CMD_INTEGRITY:
|
||||
|
||||
AcpiDbCheckIntegrity ();
|
||||
break;
|
||||
|
||||
case CMD_INTO:
|
||||
|
||||
if (Op)
|
||||
{
|
||||
AcpiGbl_CmSingleStep = TRUE;
|
||||
@ -894,6 +918,7 @@ AcpiDbCommandDispatch (
|
||||
break;
|
||||
|
||||
case CMD_LEVEL:
|
||||
|
||||
if (ParamCount == 0)
|
||||
{
|
||||
AcpiOsPrintf ("Current debug level for file output is: %8.8lX\n",
|
||||
@ -921,96 +946,119 @@ AcpiDbCommandDispatch (
|
||||
break;
|
||||
|
||||
case CMD_LIST:
|
||||
|
||||
AcpiDbDisassembleAml (AcpiGbl_DbArgs[1], Op);
|
||||
break;
|
||||
|
||||
case CMD_LOAD:
|
||||
|
||||
Status = AcpiDbGetTableFromFile (AcpiGbl_DbArgs[1], NULL);
|
||||
break;
|
||||
|
||||
case CMD_LOCKS:
|
||||
|
||||
AcpiDbDisplayLocks ();
|
||||
break;
|
||||
|
||||
case CMD_LOCALS:
|
||||
|
||||
AcpiDbDisplayLocals ();
|
||||
break;
|
||||
|
||||
case CMD_METHODS:
|
||||
|
||||
Status = AcpiDbDisplayObjects ("METHOD", AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_NAMESPACE:
|
||||
|
||||
AcpiDbDumpNamespace (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
|
||||
break;
|
||||
|
||||
case CMD_NOTIFY:
|
||||
|
||||
Temp = ACPI_STRTOUL (AcpiGbl_DbArgs[2], NULL, 0);
|
||||
AcpiDbSendNotify (AcpiGbl_DbArgs[1], Temp);
|
||||
break;
|
||||
|
||||
case CMD_OBJECT:
|
||||
|
||||
AcpiUtStrupr (AcpiGbl_DbArgs[1]);
|
||||
Status = AcpiDbDisplayObjects (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
|
||||
break;
|
||||
|
||||
case CMD_OPEN:
|
||||
|
||||
AcpiDbOpenDebugFile (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_OSI:
|
||||
|
||||
AcpiDbDisplayInterfaces (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
|
||||
break;
|
||||
|
||||
case CMD_OWNER:
|
||||
|
||||
AcpiDbDumpNamespaceByOwner (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
|
||||
break;
|
||||
|
||||
case CMD_PREDEFINED:
|
||||
|
||||
AcpiDbCheckPredefinedNames ();
|
||||
break;
|
||||
|
||||
case CMD_PREFIX:
|
||||
|
||||
AcpiDbSetScope (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_REFERENCES:
|
||||
|
||||
AcpiDbFindReferences (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_RESOURCES:
|
||||
|
||||
AcpiDbDisplayResources (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_RESULTS:
|
||||
|
||||
AcpiDbDisplayResults ();
|
||||
break;
|
||||
|
||||
case CMD_SET:
|
||||
|
||||
AcpiDbSetMethodData (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2],
|
||||
AcpiGbl_DbArgs[3]);
|
||||
break;
|
||||
|
||||
case CMD_SLEEP:
|
||||
|
||||
Status = AcpiDbSleep (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_STATS:
|
||||
|
||||
Status = AcpiDbDisplayStatistics (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_STOP:
|
||||
|
||||
return (AE_NOT_IMPLEMENTED);
|
||||
|
||||
case CMD_TABLES:
|
||||
|
||||
AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_TEMPLATE:
|
||||
|
||||
AcpiDbDisplayTemplate (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_TERMINATE:
|
||||
|
||||
AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
|
||||
AcpiUtSubsystemShutdown ();
|
||||
|
||||
@ -1023,28 +1071,34 @@ AcpiDbCommandDispatch (
|
||||
break;
|
||||
|
||||
case CMD_THREADS:
|
||||
|
||||
AcpiDbCreateExecutionThreads (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2],
|
||||
AcpiGbl_DbArgs[3]);
|
||||
break;
|
||||
|
||||
case CMD_TRACE:
|
||||
|
||||
(void) AcpiDebugTrace (AcpiGbl_DbArgs[1],0,0,1);
|
||||
break;
|
||||
|
||||
case CMD_TREE:
|
||||
|
||||
AcpiDbDisplayCallingTree ();
|
||||
break;
|
||||
|
||||
case CMD_TYPE:
|
||||
|
||||
AcpiDbDisplayObjectType (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_UNLOAD:
|
||||
|
||||
AcpiDbUnloadAcpiTable (AcpiGbl_DbArgs[1]);
|
||||
break;
|
||||
|
||||
case CMD_EXIT:
|
||||
case CMD_QUIT:
|
||||
|
||||
if (Op)
|
||||
{
|
||||
AcpiOsPrintf ("Method execution terminated\n");
|
||||
@ -1062,6 +1116,7 @@ AcpiDbCommandDispatch (
|
||||
|
||||
case CMD_NOT_FOUND:
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("Unknown Command\n");
|
||||
return (AE_CTRL_TRUE);
|
||||
}
|
||||
|
@ -271,6 +271,7 @@ AcpiDbSetMethodData (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -505,25 +506,30 @@ AcpiDbWalkForExecute (
|
||||
switch (ArgType)
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
ThisParam->Integer.Value = 1;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
ThisParam->String.Pointer = "This is the default argument string";
|
||||
ThisParam->String.Length = ACPI_STRLEN (ThisParam->String.Pointer);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
ThisParam->Buffer.Pointer = (UINT8 *) Params; /* just a garbage buffer */
|
||||
ThisParam->Buffer.Length = 48;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
ThisParam->Package.Elements = NULL;
|
||||
ThisParam->Package.Count = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("%s: Unsupported argument type: %u\n",
|
||||
Pathname, ArgType);
|
||||
break;
|
||||
|
@ -671,7 +671,7 @@ AcpiDbIntegrityWalk (
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
if (!AcpiUtValidAcpiName (Node->Name.Integer))
|
||||
if (!AcpiUtValidAcpiName (Node->Name.Ascii))
|
||||
{
|
||||
AcpiOsPrintf ("Invalid AcpiName for Node %p\n", Node);
|
||||
return (AE_OK);
|
||||
|
@ -267,6 +267,7 @@ AcpiDbEnumerateObject (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -479,7 +480,6 @@ AcpiDbDisplayStatistics (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case CMD_STAT_SIZES:
|
||||
|
||||
AcpiOsPrintf ("\nInternal object sizes:\n\n");
|
||||
@ -530,7 +530,6 @@ AcpiDbDisplayStatistics (
|
||||
AcpiOsPrintf ("Notify Info %3d\n", sizeof (ACPI_NOTIFY_INFO));
|
||||
break;
|
||||
|
||||
|
||||
case CMD_STAT_STACK:
|
||||
#if defined(ACPI_DEBUG_OUTPUT)
|
||||
|
||||
@ -545,6 +544,7 @@ AcpiDbDisplayStatistics (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -179,14 +179,12 @@ AcpiDbDumpExternalObject (
|
||||
AcpiOsPrintf ("[Null Object] (Type=0)\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length);
|
||||
@ -194,7 +192,6 @@ AcpiDbDumpExternalObject (
|
||||
AcpiOsPrintf ("\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
|
||||
@ -213,7 +210,6 @@ AcpiDbDumpExternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
AcpiOsPrintf ("[Package] Contains %u Elements:\n",
|
||||
@ -225,26 +221,22 @@ AcpiDbDumpExternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_REFERENCE:
|
||||
|
||||
AcpiOsPrintf ("[Object Reference] = ");
|
||||
AcpiDmDisplayInternalObject (ObjDesc->Reference.Handle, NULL);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PROCESSOR:
|
||||
|
||||
AcpiOsPrintf ("[Processor]\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_POWER:
|
||||
|
||||
AcpiOsPrintf ("[Power Resource]\n");
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Type);
|
||||
|
@ -232,9 +232,11 @@ AcpiDbSingleStep (
|
||||
{
|
||||
case AML_CLASS_UNKNOWN:
|
||||
case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */
|
||||
|
||||
return (AE_OK);
|
||||
|
||||
default:
|
||||
|
||||
/* All other opcodes -- continue */
|
||||
break;
|
||||
}
|
||||
@ -410,6 +412,9 @@ AcpiDbInitialize (
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE (DbInitialize);
|
||||
|
||||
|
||||
/* Init globals */
|
||||
|
||||
AcpiGbl_DbBuffer = NULL;
|
||||
@ -431,7 +436,7 @@ AcpiDbInitialize (
|
||||
AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE);
|
||||
if (!AcpiGbl_DbBuffer)
|
||||
{
|
||||
return (AE_NO_MEMORY);
|
||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||
}
|
||||
ACPI_MEMSET (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE);
|
||||
|
||||
@ -454,14 +459,14 @@ AcpiDbInitialize (
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiOsPrintf ("Could not get debugger mutex\n");
|
||||
return (Status);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiOsPrintf ("Could not get debugger mutex\n");
|
||||
return (Status);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
/* Create the debug execution thread to execute commands */
|
||||
@ -469,8 +474,8 @@ AcpiDbInitialize (
|
||||
Status = AcpiOsExecute (OSL_DEBUGGER_THREAD, AcpiDbExecuteThread, NULL);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
AcpiOsPrintf ("Could not start debugger thread\n");
|
||||
return (Status);
|
||||
ACPI_EXCEPTION ((AE_INFO, Status, "Could not start debugger thread"));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
@ -482,7 +487,7 @@ AcpiDbInitialize (
|
||||
}
|
||||
#endif
|
||||
|
||||
return (AE_OK);
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
}
|
||||
|
||||
|
||||
@ -506,6 +511,7 @@ AcpiDbTerminate (
|
||||
if (AcpiGbl_DbBuffer)
|
||||
{
|
||||
AcpiOsFree (AcpiGbl_DbBuffer);
|
||||
AcpiGbl_DbBuffer = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -194,7 +194,6 @@ AcpiDmByteList (
|
||||
|
||||
case ACPI_DASM_BUFFER:
|
||||
default:
|
||||
|
||||
/*
|
||||
* Not a resource, string, or unicode string.
|
||||
* Just dump the buffer
|
||||
|
@ -128,6 +128,7 @@ AcpiDmParseDeferredOps (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unhandled deferred AML opcode [0x%.4X]",
|
||||
Op->Common.AmlOpcode));
|
||||
break;
|
||||
@ -265,6 +266,7 @@ AcpiDmDeferredParse (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -237,20 +237,24 @@ AcpiDmNamestring (
|
||||
switch (ACPI_GET8 (Name))
|
||||
{
|
||||
case 0:
|
||||
|
||||
SegCount = 0;
|
||||
break;
|
||||
|
||||
case AML_DUAL_NAME_PREFIX:
|
||||
|
||||
SegCount = 2;
|
||||
Name++;
|
||||
break;
|
||||
|
||||
case AML_MULTI_NAME_PREFIX_OP:
|
||||
|
||||
SegCount = (UINT32) ACPI_GET8 (Name + 1);
|
||||
Name += 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
SegCount = 1;
|
||||
break;
|
||||
}
|
||||
|
@ -214,7 +214,6 @@ AcpiDmDecodeInternalObject (
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
AcpiOsPrintf ("(%u) \"%.24s",
|
||||
@ -230,7 +229,6 @@ AcpiDmDecodeInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length);
|
||||
@ -240,7 +238,6 @@ AcpiDmDecodeInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf (" %p", ObjDesc);
|
||||
@ -283,14 +280,17 @@ AcpiDmDecodeNode (
|
||||
/* 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;
|
||||
}
|
||||
@ -335,13 +335,11 @@ AcpiDmDisplayInternalObject (
|
||||
AcpiOsPrintf ("<Parser> ");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_DESC_TYPE_NAMED:
|
||||
|
||||
AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_DESC_TYPE_OPERAND:
|
||||
|
||||
Type = ObjDesc->Common.Type;
|
||||
@ -375,7 +373,6 @@ AcpiDmDisplayInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_ARG:
|
||||
|
||||
AcpiOsPrintf ("%X ", ObjDesc->Reference.Value);
|
||||
@ -388,7 +385,6 @@ AcpiDmDisplayInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_INDEX:
|
||||
|
||||
switch (ObjDesc->Reference.TargetType)
|
||||
@ -420,7 +416,6 @@ AcpiDmDisplayInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_REFOF:
|
||||
|
||||
if (!ObjDesc->Reference.Object)
|
||||
@ -446,20 +441,17 @@ AcpiDmDisplayInternalObject (
|
||||
}
|
||||
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);
|
||||
@ -467,7 +459,6 @@ AcpiDmDisplayInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("<Obj> ");
|
||||
@ -476,7 +467,6 @@ AcpiDmDisplayInternalObject (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> [%s]",
|
||||
|
@ -121,6 +121,7 @@ AcpiDmPredefinedDescription (
|
||||
switch (NameString[1])
|
||||
{
|
||||
case 'A':
|
||||
|
||||
if ((NameString[2] == 'C') && (LastCharIsDigit))
|
||||
{
|
||||
NameString = "_ACx";
|
||||
@ -132,6 +133,7 @@ AcpiDmPredefinedDescription (
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
|
||||
if ((NameString[2] == 'J') && (LastCharIsDigit))
|
||||
{
|
||||
NameString = "_EJx";
|
||||
@ -143,6 +145,7 @@ AcpiDmPredefinedDescription (
|
||||
break;
|
||||
|
||||
case 'L':
|
||||
|
||||
if (LastCharsAreHex)
|
||||
{
|
||||
NameString = "_Lxx";
|
||||
@ -150,6 +153,7 @@ AcpiDmPredefinedDescription (
|
||||
break;
|
||||
|
||||
case 'Q':
|
||||
|
||||
if (LastCharsAreHex)
|
||||
{
|
||||
NameString = "_Qxx";
|
||||
@ -157,6 +161,7 @@ AcpiDmPredefinedDescription (
|
||||
break;
|
||||
|
||||
case 'T':
|
||||
|
||||
if (NameString[2] == '_')
|
||||
{
|
||||
NameString = "_T_x";
|
||||
@ -164,6 +169,7 @@ AcpiDmPredefinedDescription (
|
||||
break;
|
||||
|
||||
case 'W':
|
||||
|
||||
if (LastCharsAreHex)
|
||||
{
|
||||
NameString = "_Wxx";
|
||||
@ -171,6 +177,7 @@ AcpiDmPredefinedDescription (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -536,21 +543,26 @@ AcpiDmDisassembleOneOp (
|
||||
return;
|
||||
|
||||
case ACPI_DASM_LNOT_SUFFIX:
|
||||
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_LEQUAL_OP:
|
||||
|
||||
AcpiOsPrintf ("LNotEqual");
|
||||
break;
|
||||
|
||||
case AML_LGREATER_OP:
|
||||
|
||||
AcpiOsPrintf ("LLessEqual");
|
||||
break;
|
||||
|
||||
case AML_LLESS_OP:
|
||||
|
||||
AcpiOsPrintf ("LGreaterEqual");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
Op->Common.DisasmOpcode = 0;
|
||||
@ -589,7 +601,6 @@ AcpiDmDisassembleOneOp (
|
||||
AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer);
|
||||
break;
|
||||
|
||||
|
||||
case AML_WORD_OP:
|
||||
|
||||
if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID)
|
||||
@ -602,7 +613,6 @@ AcpiDmDisassembleOneOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_DWORD_OP:
|
||||
|
||||
if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID)
|
||||
@ -615,22 +625,18 @@ AcpiDmDisassembleOneOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_QWORD_OP:
|
||||
|
||||
AcpiOsPrintf ("0x%8.8X%8.8X",
|
||||
ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
|
||||
break;
|
||||
|
||||
|
||||
case AML_STRING_OP:
|
||||
|
||||
AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT8_MAX);
|
||||
break;
|
||||
|
||||
|
||||
case AML_BUFFER_OP:
|
||||
|
||||
/*
|
||||
* Determine the type of buffer. We can have one of the following:
|
||||
*
|
||||
@ -680,7 +686,6 @@ AcpiDmDisassembleOneOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_STATICSTRING_OP:
|
||||
|
||||
if (Op->Common.Value.String)
|
||||
@ -693,13 +698,11 @@ AcpiDmDisassembleOneOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_NAMEPATH_OP:
|
||||
|
||||
AcpiDmNamestring (Op->Common.Value.Name);
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_NAMEDFIELD_OP:
|
||||
|
||||
Length = AcpiDmDumpName (Op->Named.Name);
|
||||
@ -710,7 +713,6 @@ AcpiDmDisassembleOneOp (
|
||||
Info->BitOffset += (UINT32) Op->Common.Value.Integer;
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_RESERVEDFIELD_OP:
|
||||
|
||||
/* Offset() -- Must account for previous offsets */
|
||||
@ -730,7 +732,6 @@ AcpiDmDisassembleOneOp (
|
||||
AcpiDmCommaIfFieldMember (Op);
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_ACCESSFIELD_OP:
|
||||
case AML_INT_EXTACCESSFIELD_OP:
|
||||
|
||||
@ -748,9 +749,7 @@ AcpiDmDisassembleOneOp (
|
||||
AcpiDmCommaIfFieldMember (Op);
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_CONNECTION_OP:
|
||||
|
||||
/*
|
||||
* Two types of Connection() - one with a buffer object, the
|
||||
* other with a namestring that points to a buffer object.
|
||||
@ -790,7 +789,6 @@ AcpiDmDisassembleOneOp (
|
||||
AcpiDmByteList (Info, Op);
|
||||
break;
|
||||
|
||||
|
||||
case AML_INT_METHODCALL_OP:
|
||||
|
||||
Op = AcpiPsGetDepthNext (NULL, Op);
|
||||
@ -799,7 +797,6 @@ AcpiDmDisassembleOneOp (
|
||||
AcpiDmNamestring (Op->Common.Value.Name);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* Just get the opcode name and print it */
|
||||
|
@ -337,6 +337,7 @@ AcpiDmResourceTemplate (
|
||||
return;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -153,16 +153,19 @@ AcpiDmMemoryFields (
|
||||
switch (Type)
|
||||
{
|
||||
case 16:
|
||||
|
||||
AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
|
||||
AcpiDmMemoryNames[i]);
|
||||
break;
|
||||
|
||||
case 32:
|
||||
|
||||
AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
|
||||
AcpiDmMemoryNames[i]);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -201,21 +204,25 @@ AcpiDmAddressFields (
|
||||
switch (Type)
|
||||
{
|
||||
case 16:
|
||||
|
||||
AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
|
||||
AcpiDmAddressNames[i]);
|
||||
break;
|
||||
|
||||
case 32:
|
||||
|
||||
AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
|
||||
AcpiDmAddressNames[i]);
|
||||
break;
|
||||
|
||||
case 64:
|
||||
|
||||
AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i],
|
||||
AcpiDmAddressNames[i]);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -242,22 +249,27 @@ AcpiDmAddressPrefix (
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS16:
|
||||
|
||||
AcpiOsPrintf ("Word");
|
||||
break;
|
||||
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS32:
|
||||
|
||||
AcpiOsPrintf ("DWord");
|
||||
break;
|
||||
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS64:
|
||||
|
||||
AcpiOsPrintf ("QWord");
|
||||
break;
|
||||
|
||||
case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
|
||||
|
||||
AcpiOsPrintf ("Extended");
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -376,14 +376,17 @@ AcpiDmGpioDescriptor (
|
||||
switch (ConnectionType)
|
||||
{
|
||||
case AML_RESOURCE_GPIO_TYPE_INT:
|
||||
|
||||
AcpiDmGpioIntDescriptor (Resource, Length, Level);
|
||||
break;
|
||||
|
||||
case AML_RESOURCE_GPIO_TYPE_IO:
|
||||
|
||||
AcpiDmGpioIoDescriptor (Resource, Length, Level);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("Unknown GPIO type\n");
|
||||
break;
|
||||
}
|
||||
@ -443,6 +446,7 @@ AcpiDmDumpSerialBusVendorData (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -461,6 +461,7 @@ AcpiDmDescendingOp (
|
||||
/* Fallthrough */
|
||||
|
||||
default:
|
||||
|
||||
AcpiDmIndent (Level);
|
||||
break;
|
||||
}
|
||||
@ -699,7 +700,6 @@ AcpiDmDescendingOp (
|
||||
AcpiDmFieldFlags (NextOp);
|
||||
break;
|
||||
|
||||
|
||||
case AML_BUFFER_OP:
|
||||
|
||||
/* The next op is the size parameter */
|
||||
@ -737,7 +737,6 @@ AcpiDmDescendingOp (
|
||||
NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST;
|
||||
return (AE_OK);
|
||||
|
||||
|
||||
case AML_VAR_PACKAGE_OP:
|
||||
case AML_IF_OP:
|
||||
case AML_WHILE_OP:
|
||||
@ -751,7 +750,6 @@ AcpiDmDescendingOp (
|
||||
}
|
||||
return (AE_OK);
|
||||
|
||||
|
||||
case AML_PACKAGE_OP:
|
||||
|
||||
/* The next op is the size parameter */
|
||||
@ -763,13 +761,11 @@ AcpiDmDescendingOp (
|
||||
}
|
||||
return (AE_OK);
|
||||
|
||||
|
||||
case AML_MATCH_OP:
|
||||
|
||||
AcpiDmMatchOp (Op);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
@ -866,7 +862,6 @@ AcpiDmAscendingOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case BLOCK_BRACE:
|
||||
case (BLOCK_BRACE | BLOCK_PAREN):
|
||||
|
||||
@ -906,7 +901,6 @@ AcpiDmAscendingOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case BLOCK_NONE:
|
||||
default:
|
||||
|
||||
|
@ -86,7 +86,6 @@ AcpiDsExecBeginControlOp (
|
||||
switch (Op->Common.AmlOpcode)
|
||||
{
|
||||
case AML_WHILE_OP:
|
||||
|
||||
/*
|
||||
* If this is an additional iteration of a while loop, continue.
|
||||
* There is no need to allocate a new control state.
|
||||
@ -107,7 +106,6 @@ AcpiDsExecBeginControlOp (
|
||||
/*lint -fallthrough */
|
||||
|
||||
case AML_IF_OP:
|
||||
|
||||
/*
|
||||
* IF/WHILE: Create a new control state to manage these
|
||||
* constructs. We need to manage these as a stack, in order
|
||||
@ -150,6 +148,7 @@ AcpiDsExecBeginControlOp (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -204,12 +203,10 @@ AcpiDsExecEndControlOp (
|
||||
AcpiUtDeleteGenericState (ControlState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_ELSE_OP:
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case AML_WHILE_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] Op=%p\n", Op));
|
||||
@ -252,7 +249,6 @@ AcpiDsExecEndControlOp (
|
||||
AcpiUtDeleteGenericState (ControlState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_RETURN_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
@ -348,12 +344,11 @@ AcpiDsExecEndControlOp (
|
||||
Status = AE_CTRL_TERMINATE;
|
||||
break;
|
||||
|
||||
|
||||
case AML_NOOP_OP:
|
||||
|
||||
/* Just do nothing! */
|
||||
break;
|
||||
|
||||
break;
|
||||
|
||||
case AML_BREAK_POINT_OP:
|
||||
|
||||
@ -373,11 +368,9 @@ AcpiDsExecEndControlOp (
|
||||
"Executed AML Breakpoint opcode");
|
||||
break;
|
||||
|
||||
|
||||
case AML_BREAK_OP:
|
||||
case AML_CONTINUE_OP: /* ACPI 2.0 */
|
||||
|
||||
|
||||
/* Pop and delete control states until we find a while */
|
||||
|
||||
while (WalkState->ControlState &&
|
||||
@ -410,7 +403,6 @@ AcpiDsExecEndControlOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unknown control opcode=0x%X Op=%p",
|
||||
|
@ -599,21 +599,25 @@ AcpiDsInitFieldObjects (
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
case AML_FIELD_OP:
|
||||
|
||||
Arg = AcpiPsGetArg (Op, 2);
|
||||
Type = ACPI_TYPE_LOCAL_REGION_FIELD;
|
||||
break;
|
||||
|
||||
case AML_BANK_FIELD_OP:
|
||||
|
||||
Arg = AcpiPsGetArg (Op, 4);
|
||||
Type = ACPI_TYPE_LOCAL_BANK_FIELD;
|
||||
break;
|
||||
|
||||
case AML_INDEX_FIELD_OP:
|
||||
|
||||
Arg = AcpiPsGetArg (Op, 3);
|
||||
Type = ACPI_TYPE_LOCAL_INDEX_FIELD;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
|
@ -128,20 +128,18 @@ AcpiDsInitOneObject (
|
||||
Info->OpRegionCount++;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
|
||||
Info->MethodCount++;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_DEVICE:
|
||||
|
||||
Info->DeviceCount++;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -315,6 +315,7 @@ AcpiDsMethodDataGetNode (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Type %u is invalid", Type));
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
}
|
||||
@ -472,7 +473,6 @@ AcpiDsMethodDataGetValue (
|
||||
return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG);
|
||||
|
||||
case ACPI_REFCLASS_LOCAL:
|
||||
|
||||
/*
|
||||
* No error message for this case, will be trapped again later to
|
||||
* detect and ignore cases of Store(LocalX,LocalX)
|
||||
|
@ -677,7 +677,6 @@ AcpiDsInitObjectFromOp (
|
||||
switch (ObjDesc->Common.Type)
|
||||
{
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
/*
|
||||
* Defer evaluation of Buffer TermArg operand
|
||||
*/
|
||||
@ -687,9 +686,7 @@ AcpiDsInitObjectFromOp (
|
||||
ObjDesc->Buffer.AmlLength = Op->Named.Length;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
/*
|
||||
* Defer evaluation of Package TermArg operand
|
||||
*/
|
||||
@ -699,7 +696,6 @@ AcpiDsInitObjectFromOp (
|
||||
ObjDesc->Package.AmlLength = Op->Named.Length;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
switch (OpInfo->Type)
|
||||
@ -752,7 +748,6 @@ AcpiDsInitObjectFromOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_LITERAL:
|
||||
|
||||
ObjDesc->Integer.Value = Op->Common.Value.Integer;
|
||||
@ -770,8 +765,8 @@ AcpiDsInitObjectFromOp (
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unknown Integer type 0x%X",
|
||||
OpInfo->Type));
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
@ -779,7 +774,6 @@ AcpiDsInitObjectFromOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
ObjDesc->String.Pointer = Op->Common.Value.String;
|
||||
@ -792,11 +786,9 @@ AcpiDsInitObjectFromOp (
|
||||
ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_REFERENCE:
|
||||
|
||||
switch (OpInfo->Type)
|
||||
@ -816,7 +808,6 @@ AcpiDsInitObjectFromOp (
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_METHOD_ARGUMENT:
|
||||
|
||||
/* Arg ID (0-6) is (AML opcode - base AML_ARG_OP) */
|
||||
@ -860,7 +851,6 @@ AcpiDsInitObjectFromOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unimplemented data type: 0x%X",
|
||||
|
@ -680,6 +680,7 @@ AcpiDsEvalDataObjectOperands (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_AML_BAD_OPCODE);
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,6 @@ AcpiDsIsResultUsed (
|
||||
|
||||
case AML_IF_OP:
|
||||
case AML_WHILE_OP:
|
||||
|
||||
/*
|
||||
* If we are executing the predicate AND this is the predicate op,
|
||||
* we will use the return value
|
||||
@ -277,7 +276,9 @@ AcpiDsIsResultUsed (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Ignore other control opcodes */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -285,16 +286,13 @@ AcpiDsIsResultUsed (
|
||||
|
||||
goto ResultNotUsed;
|
||||
|
||||
|
||||
case AML_CLASS_CREATE:
|
||||
|
||||
/*
|
||||
* These opcodes allow TermArg(s) as operands and therefore
|
||||
* the operands can be method calls. The result is used.
|
||||
*/
|
||||
goto ResultUsed;
|
||||
|
||||
|
||||
case AML_CLASS_NAMED_OBJECT:
|
||||
|
||||
if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) ||
|
||||
@ -314,9 +312,7 @@ AcpiDsIsResultUsed (
|
||||
|
||||
goto ResultNotUsed;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/*
|
||||
* In all other cases. the parent will actually use the return
|
||||
* object, so keep it.
|
||||
|
@ -318,7 +318,6 @@ AcpiDsExecBeginOp (
|
||||
Status = AcpiDsExecBeginControlOp (WalkState, Op);
|
||||
break;
|
||||
|
||||
|
||||
case AML_CLASS_NAMED_OBJECT:
|
||||
|
||||
if (WalkState->WalkType & ACPI_WALK_METHOD)
|
||||
@ -350,14 +349,13 @@ AcpiDsExecBeginOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_CLASS_EXECUTE:
|
||||
case AML_CLASS_CREATE:
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -441,7 +439,6 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_CLASS_EXECUTE: /* Most operators with arguments */
|
||||
|
||||
/* Build resolved operand stack */
|
||||
@ -514,7 +511,6 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
switch (OpType)
|
||||
@ -527,9 +523,7 @@ AcpiDsExecEndOp (
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_METHOD_CALL:
|
||||
|
||||
/*
|
||||
* If the method is referenced from within a package
|
||||
* declaration, it is not a invocation of the method, just
|
||||
@ -596,7 +590,6 @@ AcpiDsExecEndOp (
|
||||
*/
|
||||
return_ACPI_STATUS (Status);
|
||||
|
||||
|
||||
case AML_TYPE_CREATE_FIELD:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
@ -620,7 +613,6 @@ AcpiDsExecEndOp (
|
||||
switch (Op->Common.Parent->Common.AmlOpcode)
|
||||
{
|
||||
case AML_NAME_OP:
|
||||
|
||||
/*
|
||||
* Put the Node on the object stack (Contains the ACPI Name
|
||||
* of this object)
|
||||
@ -661,7 +653,6 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_NAMED_FIELD:
|
||||
case AML_TYPE_NAMED_COMPLEX:
|
||||
case AML_TYPE_NAMED_SIMPLE:
|
||||
@ -708,14 +699,12 @@ AcpiDsExecEndOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_UNDEFINED:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Undefined opcode type Op=%p", Op));
|
||||
return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
|
||||
|
||||
|
||||
case AML_TYPE_BOGUS:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
@ -723,7 +712,6 @@ AcpiDsExecEndOp (
|
||||
WalkState->Opcode, Op));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
|
@ -81,6 +81,7 @@ AcpiDsInitCallbacks (
|
||||
switch (PassNumber)
|
||||
{
|
||||
case 1:
|
||||
|
||||
WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
|
||||
ACPI_PARSE_DELETE_TREE;
|
||||
WalkState->DescendingCallback = AcpiDsLoad1BeginOp;
|
||||
@ -88,6 +89,7 @@ AcpiDsInitCallbacks (
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
|
||||
ACPI_PARSE_DELETE_TREE;
|
||||
WalkState->DescendingCallback = AcpiDsLoad2BeginOp;
|
||||
@ -95,6 +97,7 @@ AcpiDsInitCallbacks (
|
||||
break;
|
||||
|
||||
case 3:
|
||||
|
||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
||||
WalkState->ParseFlags |= ACPI_PARSE_EXECUTE |
|
||||
ACPI_PARSE_DELETE_TREE;
|
||||
@ -104,6 +107,7 @@ AcpiDsInitCallbacks (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
@ -174,7 +178,6 @@ AcpiDsLoad1BeginOp (
|
||||
switch (WalkState->Opcode)
|
||||
{
|
||||
case AML_SCOPE_OP:
|
||||
|
||||
/*
|
||||
* The target name of the Scope() operator must exist at this point so
|
||||
* that we can actually open the scope to enter new names underneath it.
|
||||
@ -221,7 +224,6 @@ AcpiDsLoad1BeginOp (
|
||||
case ACPI_TYPE_INTEGER:
|
||||
case ACPI_TYPE_STRING:
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
/*
|
||||
* These types we will allow, but we will change the type.
|
||||
* This enables some existing code of the form:
|
||||
@ -242,7 +244,6 @@ AcpiDsLoad1BeginOp (
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
|
||||
/*
|
||||
* Allow scope change to root during execution of module-level
|
||||
* code. Root is typed METHOD during this time.
|
||||
@ -268,7 +269,6 @@ AcpiDsLoad1BeginOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
/*
|
||||
* For all other named opcodes, we will enter the name into
|
||||
|
@ -496,7 +496,6 @@ AcpiDsLoad2EndOp (
|
||||
Status = AcpiDsCreateBufferField (Op, WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_NAMED_FIELD:
|
||||
/*
|
||||
* If we are executing a method, initialize the field
|
||||
@ -525,12 +524,12 @@ AcpiDsLoad2EndOp (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* All NAMED_FIELD opcodes must be handled above */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_NAMED_SIMPLE:
|
||||
|
||||
Status = AcpiDsCreateOperands (WalkState, Arg);
|
||||
@ -561,13 +560,13 @@ AcpiDsLoad2EndOp (
|
||||
Status = AcpiExCreateEvent (WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_ALIAS_OP:
|
||||
|
||||
Status = AcpiExCreateAlias (WalkState);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Unknown opcode */
|
||||
|
||||
Status = AE_OK;
|
||||
@ -652,13 +651,11 @@ AcpiDsLoad2EndOp (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_NAME_OP:
|
||||
|
||||
Status = AcpiDsCreateNode (WalkState, Node, Op);
|
||||
break;
|
||||
|
||||
|
||||
case AML_METHOD_OP:
|
||||
/*
|
||||
* MethodOp PkgLength NameString MethodFlags TermList
|
||||
@ -696,18 +693,17 @@ AcpiDsLoad2EndOp (
|
||||
#endif /* ACPI_NO_METHOD_EXECUTION */
|
||||
|
||||
default:
|
||||
|
||||
/* All NAMED_COMPLEX opcodes must be handled above */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_CLASS_INTERNAL:
|
||||
|
||||
/* case AML_INT_NAMEPATH_OP: */
|
||||
break;
|
||||
|
||||
|
||||
case AML_CLASS_METHOD_CALL:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
|
||||
@ -747,6 +743,7 @@ AcpiDsLoad2EndOp (
|
||||
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -144,6 +144,7 @@ AcpiEvRemoveGlobalLockHandler (
|
||||
Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL,
|
||||
AcpiEvGlobalLockHandler);
|
||||
|
||||
AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
@ -578,7 +578,6 @@ AcpiEvAsynchExecuteGpeMethod (
|
||||
switch (LocalGpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK)
|
||||
{
|
||||
case ACPI_GPE_DISPATCH_NOTIFY:
|
||||
|
||||
/*
|
||||
* Implicit notify.
|
||||
* Dispatch a DEVICE_WAKE notify to the appropriate handler.
|
||||
@ -631,6 +630,7 @@ AcpiEvAsynchExecuteGpeMethod (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return_VOID; /* Should never happen */
|
||||
}
|
||||
|
||||
@ -817,7 +817,6 @@ AcpiEvGpeDispatch (
|
||||
|
||||
case ACPI_GPE_DISPATCH_METHOD:
|
||||
case ACPI_GPE_DISPATCH_NOTIFY:
|
||||
|
||||
/*
|
||||
* Execute the method associated with the GPE
|
||||
* NOTE: Level-triggered GPEs are cleared after the method completes.
|
||||
@ -833,7 +832,6 @@ AcpiEvGpeDispatch (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/*
|
||||
* No handler or method to run!
|
||||
* 03/2010: This case should no longer be possible. We will not allow
|
||||
|
@ -420,6 +420,8 @@ AcpiEvCreateGpeBlock (
|
||||
Status = AcpiEvInstallGpeBlock (GpeBlock, InterruptNumber);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
ACPI_FREE (GpeBlock->RegisterInfo);
|
||||
ACPI_FREE (GpeBlock->EventInfo);
|
||||
ACPI_FREE (GpeBlock);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
@ -382,14 +382,17 @@ AcpiEvMatchGpeMethod (
|
||||
switch (Name[1])
|
||||
{
|
||||
case 'L':
|
||||
|
||||
Type = ACPI_GPE_LEVEL_TRIGGERED;
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
|
||||
Type = ACPI_GPE_EDGE_TRIGGERED;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Unknown method type, just ignore it */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_LOAD,
|
||||
|
@ -393,36 +393,43 @@ AcpiEvInstallSpaceHandler (
|
||||
switch (SpaceId)
|
||||
{
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
|
||||
Handler = AcpiExSystemMemorySpaceHandler;
|
||||
Setup = AcpiEvSystemMemoryRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
|
||||
Handler = AcpiExSystemIoSpaceHandler;
|
||||
Setup = AcpiEvIoSpaceRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_PCI_CONFIG:
|
||||
|
||||
Handler = AcpiExPciConfigSpaceHandler;
|
||||
Setup = AcpiEvPciConfigRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_CMOS:
|
||||
|
||||
Handler = AcpiExCmosSpaceHandler;
|
||||
Setup = AcpiEvCmosRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_PCI_BAR_TARGET:
|
||||
|
||||
Handler = AcpiExPciBarSpaceHandler;
|
||||
Setup = AcpiEvPciBarRegionSetup;
|
||||
break;
|
||||
|
||||
case ACPI_ADR_SPACE_DATA_TABLE:
|
||||
|
||||
Handler = AcpiExDataTableSpaceHandler;
|
||||
Setup = NULL;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_BAD_PARAMETER;
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
@ -86,6 +86,7 @@ AcpiEvIsNotifyObject (
|
||||
return (TRUE);
|
||||
|
||||
default:
|
||||
|
||||
return (FALSE);
|
||||
}
|
||||
}
|
||||
@ -306,6 +307,8 @@ AcpiEvTerminate (
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Could not remove Global Lock handler"));
|
||||
}
|
||||
|
||||
AcpiGbl_EventsInitialized = FALSE;
|
||||
}
|
||||
|
||||
/* Deallocate all handler objects installed within GPE info structs */
|
||||
|
@ -664,7 +664,9 @@ AcpiEvInitializeRegion (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Ignore other objects */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -250,14 +250,17 @@ AcpiSetGpe (
|
||||
switch (Action)
|
||||
{
|
||||
case ACPI_GPE_ENABLE:
|
||||
|
||||
Status = AcpiEvEnableGpe (GpeEventInfo);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_DISABLE:
|
||||
|
||||
Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
}
|
||||
@ -487,14 +490,17 @@ AcpiSetGpeWakeMask (
|
||||
switch (Action)
|
||||
{
|
||||
case ACPI_GPE_ENABLE:
|
||||
|
||||
ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, (UINT8) RegisterBit);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_DISABLE:
|
||||
|
||||
ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, (UINT8) RegisterBit);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "%u, Invalid action", Action));
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
|
@ -149,6 +149,7 @@ AcpiInstallAddressSpaceHandler (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -483,7 +483,6 @@ AcpiExLoadOp (
|
||||
TableDesc.Address = ObjDesc->Region.Address;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER: /* Buffer or resolved RegionField */
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
|
||||
@ -526,8 +525,8 @@ AcpiExLoadOp (
|
||||
TableDesc.Address = ACPI_TO_INTEGER (TableDesc.Pointer);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
|
@ -114,6 +114,7 @@ AcpiExConvertToInteger (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
}
|
||||
|
||||
@ -133,7 +134,6 @@ AcpiExConvertToInteger (
|
||||
switch (ObjDesc->Common.Type)
|
||||
{
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
/*
|
||||
* Convert string to an integer - for most cases, the string must be
|
||||
* hexadecimal as per the ACPI specification. The only exception (as
|
||||
@ -147,7 +147,6 @@ AcpiExConvertToInteger (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
/* Check for zero-length buffer */
|
||||
@ -179,10 +178,10 @@ AcpiExConvertToInteger (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* No other types can get here */
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -242,7 +241,6 @@ AcpiExConvertToBuffer (
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
/*
|
||||
* Create a new Buffer object.
|
||||
* Need enough space for one integer
|
||||
@ -261,9 +259,7 @@ AcpiExConvertToBuffer (
|
||||
AcpiGbl_IntegerByteWidth);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
/*
|
||||
* Create a new Buffer object
|
||||
* Size will be the string length
|
||||
@ -287,8 +283,8 @@ AcpiExConvertToBuffer (
|
||||
ObjDesc->String.Length);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
}
|
||||
|
||||
@ -344,15 +340,18 @@ AcpiExConvertToAscii (
|
||||
switch (DataWidth)
|
||||
{
|
||||
case 1:
|
||||
|
||||
DecimalLength = ACPI_MAX8_DECIMAL_DIGITS;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
|
||||
DecimalLength = ACPI_MAX32_DECIMAL_DIGITS;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
default:
|
||||
|
||||
DecimalLength = ACPI_MAX64_DECIMAL_DIGITS;
|
||||
break;
|
||||
}
|
||||
@ -461,7 +460,6 @@ AcpiExConvertToString (
|
||||
*ResultDesc = ObjDesc;
|
||||
return_ACPI_STATUS (AE_OK);
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
switch (Type)
|
||||
@ -505,7 +503,6 @@ AcpiExConvertToString (
|
||||
NewBuf [StringLength] = 0;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
/* Setup string length, base, and separator */
|
||||
@ -604,6 +601,7 @@ AcpiExConvertToString (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_TYPE);
|
||||
}
|
||||
|
||||
@ -663,6 +661,7 @@ AcpiExConvertToTargetType (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* No conversion allowed for these types */
|
||||
|
||||
if (DestinationType != SourceDesc->Common.Type)
|
||||
@ -676,7 +675,6 @@ AcpiExConvertToTargetType (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ARGI_TARGETREF:
|
||||
|
||||
switch (DestinationType)
|
||||
@ -693,7 +691,6 @@ AcpiExConvertToTargetType (
|
||||
16);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
/*
|
||||
* The operand must be a String. We can convert an
|
||||
@ -703,7 +700,6 @@ AcpiExConvertToTargetType (
|
||||
ACPI_IMPLICIT_CONVERT_HEX);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
/*
|
||||
* The operand must be a Buffer. We can convert an
|
||||
@ -712,8 +708,8 @@ AcpiExConvertToTargetType (
|
||||
Status = AcpiExConvertToBuffer (SourceDesc, ResultDesc);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: 0x%X",
|
||||
DestinationType));
|
||||
Status = AE_AML_INTERNAL;
|
||||
@ -721,15 +717,14 @@ AcpiExConvertToTargetType (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ARGI_REFERENCE:
|
||||
/*
|
||||
* CreateXxxxField cases - we are storing the field object into the name
|
||||
*/
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unknown Target type ID 0x%X AmlOpcode 0x%X DestType %s",
|
||||
GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs),
|
||||
|
@ -113,7 +113,6 @@ AcpiExCreateAlias (
|
||||
case ACPI_TYPE_BUFFER:
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
|
||||
/*
|
||||
* These types open a new scope, so we need the NS node in order to access
|
||||
* any children.
|
||||
@ -123,7 +122,6 @@ AcpiExCreateAlias (
|
||||
case ACPI_TYPE_PROCESSOR:
|
||||
case ACPI_TYPE_THERMAL:
|
||||
case ACPI_TYPE_LOCAL_SCOPE:
|
||||
|
||||
/*
|
||||
* The new alias has the type ALIAS and points to the original
|
||||
* NS node, not the object itself.
|
||||
@ -133,7 +131,6 @@ AcpiExCreateAlias (
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
|
||||
/*
|
||||
* Control method aliases need to be differentiated
|
||||
*/
|
||||
|
@ -208,6 +208,7 @@ AcpiExDoDebugObject (
|
||||
return_VOID;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -241,6 +242,7 @@ AcpiExDoDebugObject (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object,
|
||||
Level+4, 0);
|
||||
break;
|
||||
|
@ -380,6 +380,7 @@ AcpiExDumpObject (
|
||||
switch (Info->Opcode)
|
||||
{
|
||||
case ACPI_EXD_INIT:
|
||||
|
||||
break;
|
||||
|
||||
case ACPI_EXD_TYPE:
|
||||
@ -541,19 +542,16 @@ AcpiExDumpOperand (
|
||||
AcpiOsPrintf ("\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_INDEX:
|
||||
|
||||
AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_TABLE:
|
||||
|
||||
AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_REFOF:
|
||||
|
||||
AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
|
||||
@ -561,20 +559,17 @@ AcpiExDumpOperand (
|
||||
ObjDesc->Reference.Object)->Common.Type));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_NAME:
|
||||
|
||||
AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_ARG:
|
||||
case ACPI_REFCLASS_LOCAL:
|
||||
|
||||
AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
|
||||
break;
|
||||
|
||||
|
||||
default: /* Unknown reference class */
|
||||
|
||||
AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
|
||||
@ -582,7 +577,6 @@ AcpiExDumpOperand (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
AcpiOsPrintf ("Buffer length %.2X @ %p\n",
|
||||
@ -604,14 +598,12 @@ AcpiExDumpOperand (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
AcpiOsPrintf ("Integer %8.8X%8.8X\n",
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
|
||||
@ -632,7 +624,6 @@ AcpiExDumpOperand (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_REGION:
|
||||
|
||||
AcpiOsPrintf ("Region %s (%X)",
|
||||
@ -655,7 +646,6 @@ AcpiExDumpOperand (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
AcpiOsPrintf ("String length %X @ %p ",
|
||||
@ -666,13 +656,11 @@ AcpiExDumpOperand (
|
||||
AcpiOsPrintf ("\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_BANK_FIELD:
|
||||
|
||||
AcpiOsPrintf ("BankField\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_REGION_FIELD:
|
||||
|
||||
AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
|
||||
@ -687,13 +675,11 @@ AcpiExDumpOperand (
|
||||
AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_INDEX_FIELD:
|
||||
|
||||
AcpiOsPrintf ("IndexField\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
|
||||
AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
|
||||
@ -716,13 +702,11 @@ AcpiExDumpOperand (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_EVENT:
|
||||
|
||||
AcpiOsPrintf ("Event\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_METHOD:
|
||||
|
||||
AcpiOsPrintf ("Method(%X) @ %p:%X\n",
|
||||
@ -731,38 +715,33 @@ AcpiExDumpOperand (
|
||||
ObjDesc->Method.AmlLength);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_MUTEX:
|
||||
|
||||
AcpiOsPrintf ("Mutex\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_DEVICE:
|
||||
|
||||
AcpiOsPrintf ("Device\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_POWER:
|
||||
|
||||
AcpiOsPrintf ("Power\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PROCESSOR:
|
||||
|
||||
AcpiOsPrintf ("Processor\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_THERMAL:
|
||||
|
||||
AcpiOsPrintf ("Thermal\n");
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* Unknown Type */
|
||||
|
||||
AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
|
||||
@ -1005,7 +984,6 @@ AcpiExDumpPackageObj (
|
||||
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
AcpiOsPrintf ("[String] Value: ");
|
||||
@ -1013,7 +991,6 @@ AcpiExDumpPackageObj (
|
||||
AcpiOsPrintf ("\n");
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
|
||||
@ -1028,7 +1005,6 @@ AcpiExDumpPackageObj (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
AcpiOsPrintf ("[Package] Contains %u Elements:\n",
|
||||
@ -1040,7 +1016,6 @@ AcpiExDumpPackageObj (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_REFERENCE:
|
||||
|
||||
AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X",
|
||||
@ -1049,7 +1024,6 @@ AcpiExDumpPackageObj (
|
||||
AcpiExDumpReferenceObj (ObjDesc);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type);
|
||||
|
@ -360,21 +360,25 @@ AcpiExWriteDataToField (
|
||||
switch (SourceDesc->Common.Type)
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
Buffer = &SourceDesc->Integer.Value;
|
||||
Length = sizeof (SourceDesc->Integer.Value);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
Buffer = SourceDesc->Buffer.Pointer;
|
||||
Length = SourceDesc->Buffer.Length;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
Buffer = SourceDesc->String.Pointer;
|
||||
Length = SourceDesc->String.Length;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
|
@ -480,9 +480,7 @@ AcpiExFieldDatumIo (
|
||||
Status = AE_OK;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_BANK_FIELD:
|
||||
|
||||
/*
|
||||
* Ensure that the BankValue is not beyond the capacity of
|
||||
* the register
|
||||
@ -512,7 +510,6 @@ AcpiExFieldDatumIo (
|
||||
|
||||
/*lint -fallthrough */
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_REGION_FIELD:
|
||||
/*
|
||||
* For simple RegionFields, we just directly access the owning
|
||||
@ -522,10 +519,7 @@ AcpiExFieldDatumIo (
|
||||
ReadWrite);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_LOCAL_INDEX_FIELD:
|
||||
|
||||
|
||||
/*
|
||||
* Ensure that the IndexValue is not beyond the capacity of
|
||||
* the register
|
||||
@ -575,7 +569,6 @@ AcpiExFieldDatumIo (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Wrong object type in field I/O %u",
|
||||
|
@ -115,16 +115,13 @@ AcpiExGetObjectReference (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_DESC_TYPE_NAMED:
|
||||
|
||||
/*
|
||||
* A named reference that has already been resolved to a Node
|
||||
*/
|
||||
ReferencedObj = ObjDesc;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Invalid descriptor type 0x%X",
|
||||
@ -286,19 +283,23 @@ AcpiExDoConcatenate (
|
||||
switch (Operand0->Common.Type)
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
Status = AcpiExConvertToString (Operand1, &LocalOperand1,
|
||||
ACPI_IMPLICIT_CONVERT_HEX);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Invalid object type: 0x%X",
|
||||
Operand0->Common.Type));
|
||||
Status = AE_AML_INTERNAL;
|
||||
@ -450,37 +451,30 @@ AcpiExDoMathOp (
|
||||
|
||||
return (Integer0 + Integer1);
|
||||
|
||||
|
||||
case AML_BIT_AND_OP: /* And (Integer0, Integer1, Result) */
|
||||
|
||||
return (Integer0 & Integer1);
|
||||
|
||||
|
||||
case AML_BIT_NAND_OP: /* NAnd (Integer0, Integer1, Result) */
|
||||
|
||||
return (~(Integer0 & Integer1));
|
||||
|
||||
|
||||
case AML_BIT_OR_OP: /* Or (Integer0, Integer1, Result) */
|
||||
|
||||
return (Integer0 | Integer1);
|
||||
|
||||
|
||||
case AML_BIT_NOR_OP: /* NOr (Integer0, Integer1, Result) */
|
||||
|
||||
return (~(Integer0 | Integer1));
|
||||
|
||||
|
||||
case AML_BIT_XOR_OP: /* XOr (Integer0, Integer1, Result) */
|
||||
|
||||
return (Integer0 ^ Integer1);
|
||||
|
||||
|
||||
case AML_MULTIPLY_OP: /* Multiply (Integer0, Integer1, Result) */
|
||||
|
||||
return (Integer0 * Integer1);
|
||||
|
||||
|
||||
case AML_SHIFT_LEFT_OP: /* ShiftLeft (Operand, ShiftCount, Result)*/
|
||||
|
||||
/*
|
||||
@ -493,7 +487,6 @@ AcpiExDoMathOp (
|
||||
}
|
||||
return (Integer0 << Integer1);
|
||||
|
||||
|
||||
case AML_SHIFT_RIGHT_OP: /* ShiftRight (Operand, ShiftCount, Result) */
|
||||
|
||||
/*
|
||||
@ -506,7 +499,6 @@ AcpiExDoMathOp (
|
||||
}
|
||||
return (Integer0 >> Integer1);
|
||||
|
||||
|
||||
case AML_SUBTRACT_OP: /* Subtract (Integer0, Integer1, Result) */
|
||||
|
||||
return (Integer0 - Integer1);
|
||||
@ -571,6 +563,7 @@ AcpiExDoLogicalNumericOp (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
}
|
||||
@ -638,19 +631,23 @@ AcpiExDoLogicalOp (
|
||||
switch (Operand0->Common.Type)
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
Status = AcpiExConvertToString (Operand1, &LocalOperand1,
|
||||
ACPI_IMPLICIT_CONVERT_HEX);
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER:
|
||||
|
||||
Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
}
|
||||
@ -699,6 +696,7 @@ AcpiExDoLogicalOp (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
}
|
||||
@ -776,6 +774,7 @@ AcpiExDoLogicalOp (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_AML_INTERNAL;
|
||||
break;
|
||||
}
|
||||
|
@ -334,7 +334,6 @@ AcpiExGetNameString (
|
||||
HasPrefix = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case AML_PARENT_PREFIX:
|
||||
|
||||
/* Increment past possibly multiple parent prefixes */
|
||||
@ -352,7 +351,6 @@ AcpiExGetNameString (
|
||||
HasPrefix = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* Not a prefix character */
|
||||
@ -388,7 +386,6 @@ AcpiExGetNameString (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_MULTI_NAME_PREFIX_OP:
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "MultiNamePrefix at %p\n",
|
||||
@ -420,7 +417,6 @@ AcpiExGetNameString (
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case 0:
|
||||
|
||||
/* NullName valid as of 8-12-98 ASL/AML Grammar Update */
|
||||
@ -443,7 +439,6 @@ AcpiExGetNameString (
|
||||
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* Name segment string */
|
||||
|
@ -180,37 +180,31 @@ AcpiExOpcode_1A_0T_0R (
|
||||
Status = AcpiExReleaseMutex (Operand[0], WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_RESET_OP: /* Reset (EventObject) */
|
||||
|
||||
Status = AcpiExSystemResetEvent (Operand[0]);
|
||||
break;
|
||||
|
||||
|
||||
case AML_SIGNAL_OP: /* Signal (EventObject) */
|
||||
|
||||
Status = AcpiExSystemSignalEvent (Operand[0]);
|
||||
break;
|
||||
|
||||
|
||||
case AML_SLEEP_OP: /* Sleep (MsecTime) */
|
||||
|
||||
Status = AcpiExSystemDoSleep (Operand[0]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
case AML_STALL_OP: /* Stall (UsecTime) */
|
||||
|
||||
Status = AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value);
|
||||
break;
|
||||
|
||||
|
||||
case AML_UNLOAD_OP: /* Unload (Handle) */
|
||||
|
||||
Status = AcpiExUnloadTable (Operand[0]);
|
||||
break;
|
||||
|
||||
|
||||
default: /* Unknown opcode */
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
|
||||
@ -330,7 +324,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
ReturnDesc->Integer.Value = ~Operand[0]->Integer.Value;
|
||||
break;
|
||||
|
||||
|
||||
case AML_FIND_SET_LEFT_BIT_OP: /* FindSetLeftBit (Operand, Result) */
|
||||
|
||||
ReturnDesc->Integer.Value = Operand[0]->Integer.Value;
|
||||
@ -348,7 +341,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
ReturnDesc->Integer.Value = Temp32;
|
||||
break;
|
||||
|
||||
|
||||
case AML_FIND_SET_RIGHT_BIT_OP: /* FindSetRightBit (Operand, Result) */
|
||||
|
||||
ReturnDesc->Integer.Value = Operand[0]->Integer.Value;
|
||||
@ -369,9 +361,7 @@ AcpiExOpcode_1A_1T_1R (
|
||||
Temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - Temp32;
|
||||
break;
|
||||
|
||||
|
||||
case AML_FROM_BCD_OP: /* FromBcd (BCDValue, Result) */
|
||||
|
||||
/*
|
||||
* The 64-bit ACPI integer can hold 16 4-bit BCD characters
|
||||
* (if table is 32-bit, integer can hold 8 BCD characters)
|
||||
@ -416,7 +406,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TO_BCD_OP: /* ToBcd (Operand, Result) */
|
||||
|
||||
ReturnDesc->Integer.Value = 0;
|
||||
@ -448,9 +437,7 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_COND_REF_OF_OP: /* CondRefOf (SourceObject, Result) */
|
||||
|
||||
/*
|
||||
* This op is a little strange because the internal return value is
|
||||
* different than the return value stored in the result descriptor
|
||||
@ -485,14 +472,14 @@ AcpiExOpcode_1A_1T_1R (
|
||||
|
||||
|
||||
default:
|
||||
|
||||
/* No other opcodes get here */
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_STORE_OP: /* Store (Source, Target) */
|
||||
|
||||
/*
|
||||
* A store operand is typically a number, string, buffer or lvalue
|
||||
* Be careful about deleting the source object,
|
||||
@ -519,7 +506,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
return_ACPI_STATUS (Status);
|
||||
|
||||
|
||||
/*
|
||||
* ACPI 2.0 Opcodes
|
||||
*/
|
||||
@ -529,7 +515,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToString (Operand[0], &ReturnDesc,
|
||||
@ -541,7 +526,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToString (Operand[0], &ReturnDesc,
|
||||
@ -553,7 +537,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TO_BUFFER_OP: /* ToBuffer (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToBuffer (Operand[0], &ReturnDesc);
|
||||
@ -564,7 +547,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */
|
||||
|
||||
Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc,
|
||||
@ -576,7 +558,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_SHIFT_LEFT_BIT_OP: /* ShiftLeftBit (Source, BitNum) */
|
||||
case AML_SHIFT_RIGHT_BIT_OP: /* ShiftRightBit (Source, BitNum) */
|
||||
|
||||
@ -588,7 +569,6 @@ AcpiExOpcode_1A_1T_1R (
|
||||
Status = AE_SUPPORT;
|
||||
goto Cleanup;
|
||||
|
||||
|
||||
default: /* Unknown opcode */
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
|
||||
@ -676,10 +656,8 @@ AcpiExOpcode_1A_0T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_DECREMENT_OP: /* Decrement (Operand) */
|
||||
case AML_INCREMENT_OP: /* Increment (Operand) */
|
||||
|
||||
/*
|
||||
* Create a new integer. Can't just get the base integer and
|
||||
* increment it because it may be an Arg or Field.
|
||||
@ -744,9 +722,7 @@ AcpiExOpcode_1A_0T_1R (
|
||||
Status = AcpiExStore (ReturnDesc, Operand[0], WalkState);
|
||||
break;
|
||||
|
||||
|
||||
case AML_TYPE_OP: /* ObjectType (SourceObject) */
|
||||
|
||||
/*
|
||||
* Note: The operand is not resolved at this point because we want to
|
||||
* get the associated object, not its value. For example, we don't
|
||||
@ -772,9 +748,7 @@ AcpiExOpcode_1A_0T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */
|
||||
|
||||
/*
|
||||
* Note: The operand is not resolved at this point because we want to
|
||||
* get the associated object, not its value.
|
||||
@ -801,10 +775,12 @@ AcpiExOpcode_1A_0T_1R (
|
||||
switch (Type)
|
||||
{
|
||||
case ACPI_TYPE_INTEGER:
|
||||
|
||||
Value = AcpiGbl_IntegerByteWidth;
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
Value = TempDesc->String.Length;
|
||||
break;
|
||||
|
||||
@ -825,6 +801,7 @@ AcpiExOpcode_1A_0T_1R (
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Operand must be Buffer/Integer/String/Package - found type %s",
|
||||
AcpiUtGetTypeName (Type)));
|
||||
@ -932,9 +909,11 @@ AcpiExOpcode_1A_0T_1R (
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_STRING:
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Status = AE_AML_OPERAND_TYPE;
|
||||
goto Cleanup;
|
||||
}
|
||||
@ -993,7 +972,6 @@ AcpiExOpcode_1A_0T_1R (
|
||||
switch (Operand[0]->Reference.Class)
|
||||
{
|
||||
case ACPI_REFCLASS_INDEX:
|
||||
|
||||
/*
|
||||
* The target type for the Index operator must be
|
||||
* either a Buffer or a Package
|
||||
@ -1025,9 +1003,7 @@ AcpiExOpcode_1A_0T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_TYPE_PACKAGE:
|
||||
|
||||
/*
|
||||
* Return the referenced element of the package. We must
|
||||
* add another reference to the referenced object, however.
|
||||
@ -1039,7 +1015,6 @@ AcpiExOpcode_1A_0T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
@ -1050,7 +1025,6 @@ AcpiExOpcode_1A_0T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REFCLASS_REFOF:
|
||||
|
||||
ReturnDesc = Operand[0]->Reference.Object;
|
||||
@ -1067,8 +1041,8 @@ AcpiExOpcode_1A_0T_1R (
|
||||
AcpiUtAddReference (ReturnDesc);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO,
|
||||
"Unknown class in reference(%p) - 0x%2.2X",
|
||||
Operand[0], Operand[0]->Reference.Class));
|
||||
@ -1079,7 +1053,6 @@ AcpiExOpcode_1A_0T_1R (
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
|
||||
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user