Merge ACPICA 20130517.

This commit is contained in:
Jung-uk Kim 2013-05-20 23:52:49 +00:00
commit a9d8d09c46
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=250838
165 changed files with 3651 additions and 2229 deletions

View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -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");

View File

@ -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;
}

View File

@ -594,6 +594,7 @@ AcpiDmAddExternalsToNamespace (
break;
default:
break;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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 */

View File

@ -107,7 +107,9 @@ HxDoHexOutput (
break;
default:
/* No other output types supported */
break;
}
}

View File

@ -258,6 +258,7 @@ CgGenerateAmlOpcodeLength (
break;
default:
/* All data opcodes must be above */
break;
}
@ -326,6 +327,7 @@ CgGenerateAmlLengths (
return;
default:
break;
}

View File

@ -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;
}
}

View File

@ -251,7 +251,9 @@ LsWriteListingHexBytes (
break;
default:
/* No other types supported */
return;
}
}
@ -617,7 +619,9 @@ LsFlushListingBuffer (
break;
default:
/* No other types supported */
return;
}

View File

@ -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:

View File

@ -144,9 +144,11 @@ LkIsObjectUsed (
case ACPI_TYPE_PROCESSOR:
case ACPI_TYPE_POWER:
case ACPI_TYPE_LOCAL_RESOURCE:
return (AE_OK);
default:
break;
}

View File

@ -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)
{

View File

@ -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 */

View File

@ -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) &&

View File

@ -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;
}
}

View File

@ -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);

View File

@ -266,6 +266,7 @@ OpcSetOptimalIntegerSize (
break;
default:
break;
}
}
@ -811,7 +812,9 @@ OpcGenerateAmlOpcode (
break;
default:
/* Nothing to do for other opcodes */
break;
}

View File

@ -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;
}

View 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);
}

View File

@ -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);

View File

@ -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;

View File

@ -245,6 +245,7 @@ RsDoFixedDmaDescriptor (
break;
default: /* Ignore any extra nodes */
break;
}

View File

@ -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;
}

View File

@ -534,6 +534,7 @@ AslDoOneFile (
return (AE_ERROR);
default:
printf ("Unknown file type %X\n", Gbl_FileType);
return (AE_ERROR);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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 */

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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",

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -194,7 +194,6 @@ AcpiDmByteList (
case ACPI_DASM_BUFFER:
default:
/*
* Not a resource, string, or unicode string.
* Just dump the buffer

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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]",

View File

@ -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 */

View File

@ -337,6 +337,7 @@ AcpiDmResourceTemplate (
return;
default:
break;
}

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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:

View File

@ -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",

View File

@ -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);
}

View File

@ -128,20 +128,18 @@ AcpiDsInitOneObject (
Info->OpRegionCount++;
break;
case ACPI_TYPE_METHOD:
Info->MethodCount++;
break;
case ACPI_TYPE_DEVICE:
Info->DeviceCount++;
break;
default:
break;
}

View File

@ -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)

View File

@ -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",

View File

@ -680,6 +680,7 @@ AcpiDsEvalDataObjectOperands (
break;
default:
return_ACPI_STATUS (AE_AML_BAD_OPCODE);
}

View File

@ -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.

View File

@ -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,

View File

@ -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

View File

@ -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;
}

View File

@ -144,6 +144,7 @@ AcpiEvRemoveGlobalLockHandler (
Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL,
AcpiEvGlobalLockHandler);
AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock);
return_ACPI_STATUS (Status);
}

View File

@ -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

View File

@ -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);
}

View File

@ -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,

View File

@ -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;
}

View File

@ -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 */

View File

@ -664,7 +664,9 @@ AcpiEvInitializeRegion (
break;
default:
/* Ignore other objects */
break;
}

View File

@ -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;

View File

@ -149,6 +149,7 @@ AcpiInstallAddressSpaceHandler (
break;
default:
break;
}

View File

@ -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);
}

View File

@ -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),

View File

@ -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
*/

View File

@ -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;

View File

@ -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);

View File

@ -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);
}

View File

@ -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",

View File

@ -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;
}

View File

@ -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 */

View File

@ -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