Import ACPICA 20181213.
This commit is contained in:
parent
4d4b15a0e8
commit
d28459aaaf
65
changes.txt
65
changes.txt
@ -1,8 +1,69 @@
|
|||||||
|
----------------------------------------
|
||||||
|
13 December 2018. Summary of changes for version 20181213:
|
||||||
|
|
||||||
|
|
||||||
|
1) ACPICA Kernel-resident Subsystem:
|
||||||
|
|
||||||
|
Fixed some buffer length issues with the GenericSerialBus, related to two
|
||||||
|
of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
|
||||||
|
which are rarely seen in the field. For these, the LEN field of the ASL
|
||||||
|
buffer is now ignored. Hans de Goede
|
||||||
|
|
||||||
|
Implemented a new object evaluation trace mechanism for control methods
|
||||||
|
and data objects. This includes nested control methods. It is
|
||||||
|
particularly useful for examining the ACPI execution during system
|
||||||
|
initialization since the output is relatively terse. The flag below
|
||||||
|
enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
|
||||||
|
#define ACPI_LV_EVALUATION 0x00080000
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
Enter evaluation : _SB.PCI0._INI (Method)
|
||||||
|
Exit evaluation : _SB.PCI0._INI
|
||||||
|
Enter evaluation : _OSI (Method)
|
||||||
|
Exit evaluation : _OSI
|
||||||
|
Enter evaluation : _SB.PCI0.TEST (Method)
|
||||||
|
Nested method call : _SB.PCI0.NST1
|
||||||
|
Exit nested method : _SB.PCI0.NST1
|
||||||
|
Exit evaluation : _SB.PCI0.TEST
|
||||||
|
|
||||||
|
Added two recently-defined _OSI strings. See
|
||||||
|
https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
|
||||||
|
osi.
|
||||||
|
"Windows 2018"
|
||||||
|
"Windows 2018.2"
|
||||||
|
|
||||||
|
Update for buffer-to-string conversions via the ToHexString ASL operator.
|
||||||
|
A "0x" is now prepended to each of the hex values in the output string.
|
||||||
|
This provides compatibility with other ACPI implementations. The ACPI
|
||||||
|
specification is somewhat vague on this issue.
|
||||||
|
Example output string after conversion:
|
||||||
|
"0x01,0x02,0x03,0x04,0x05,0x06"
|
||||||
|
|
||||||
|
Return a run-time error for TermArg expressions within individual package
|
||||||
|
elements. Although this is technically supported by the ASL grammar,
|
||||||
|
other ACPI implementations do not support this either. Also, this fixes a
|
||||||
|
fault if this type of construct is ever encountered (it never has been).
|
||||||
|
|
||||||
|
|
||||||
|
2) iASL Compiler/Disassembler and Tools:
|
||||||
|
|
||||||
|
iASL: Implemented a new compile option (-ww) that will promote individual
|
||||||
|
warnings and remarks to errors. This is intended to enhance the firmware
|
||||||
|
build process.
|
||||||
|
|
||||||
|
AcpiExec: Implemented a new command-line option (-eo) to support the new
|
||||||
|
object evaluation trace mechanism described above.
|
||||||
|
|
||||||
|
Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
|
||||||
|
instead of a "unknown table" message.
|
||||||
|
|
||||||
|
AcpiHelp: Improved support for the "special" predefined names such as
|
||||||
|
_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
|
||||||
|
used for "xx" and "x".
|
||||||
|
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
31 October 2018. Summary of changes for version 20181031:
|
31 October 2018. Summary of changes for version 20181031:
|
||||||
|
|
||||||
This release is available at https://acpica.org/downloads
|
|
||||||
|
|
||||||
|
|
||||||
An Operation Region regression was fixed by properly adding address
|
An Operation Region regression was fixed by properly adding address
|
||||||
ranges to a global list during initialization. This allows OS to
|
ranges to a global list during initialization. This allows OS to
|
||||||
|
@ -171,7 +171,7 @@
|
|||||||
*/
|
*/
|
||||||
const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
||||||
{
|
{
|
||||||
AH_PREDEF ("_ACx", "Active Cooling", "Returns the active cooling policy threshold values"),
|
AH_PREDEF ("_ACx", "Active Cooling, x=0-9", "Returns the active cooling policy threshold values"),
|
||||||
AH_PREDEF ("_ADR", "Address", "Returns address of a device on parent bus, and resource field"),
|
AH_PREDEF ("_ADR", "Address", "Returns address of a device on parent bus, and resource field"),
|
||||||
AH_PREDEF ("_AEI", "ACPI Event Interrupts", "Returns a list of GPIO events to be used as ACPI events"),
|
AH_PREDEF ("_AEI", "ACPI Event Interrupts", "Returns a list of GPIO events to be used as ACPI events"),
|
||||||
AH_PREDEF ("_ALC", "Ambient Light Chromaticity", "Returns the ambient light color chromaticity"),
|
AH_PREDEF ("_ALC", "Ambient Light Chromaticity", "Returns the ambient light color chromaticity"),
|
||||||
@ -180,7 +180,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
|||||||
AH_PREDEF ("_ALP", "Ambient Light Polling", "Returns the ambient light sensor polling frequency"),
|
AH_PREDEF ("_ALP", "Ambient Light Polling", "Returns the ambient light sensor polling frequency"),
|
||||||
AH_PREDEF ("_ALR", "Ambient Light Response", "Returns the ambient light brightness to display brightness mappings"),
|
AH_PREDEF ("_ALR", "Ambient Light Response", "Returns the ambient light brightness to display brightness mappings"),
|
||||||
AH_PREDEF ("_ALT", "Ambient Light Temperature", "Returns the ambient light color temperature"),
|
AH_PREDEF ("_ALT", "Ambient Light Temperature", "Returns the ambient light color temperature"),
|
||||||
AH_PREDEF ("_ALx", "Active List", "Returns a list of active cooling device objects"),
|
AH_PREDEF ("_ALx", "Active List, x=0-9", "Returns a list of active cooling device objects"),
|
||||||
AH_PREDEF ("_ART", "Active Cooling Relationship Table", "Returns thermal relationship information between platform devices and fan devices"),
|
AH_PREDEF ("_ART", "Active Cooling Relationship Table", "Returns thermal relationship information between platform devices and fan devices"),
|
||||||
AH_PREDEF ("_ASI", "Address Space Id", "Resource Descriptor field"),
|
AH_PREDEF ("_ASI", "Address Space Id", "Resource Descriptor field"),
|
||||||
AH_PREDEF ("_ASZ", "Access Size", "Resource Descriptor field"),
|
AH_PREDEF ("_ASZ", "Access Size", "Resource Descriptor field"),
|
||||||
@ -237,11 +237,11 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
|||||||
AH_PREDEF ("_DSS", "Device Set State", "Sets the display device state"),
|
AH_PREDEF ("_DSS", "Device Set State", "Sets the display device state"),
|
||||||
AH_PREDEF ("_DSW", "Device Sleep Wake", "Sets the sleep and wake transition states for a device"),
|
AH_PREDEF ("_DSW", "Device Sleep Wake", "Sets the sleep and wake transition states for a device"),
|
||||||
AH_PREDEF ("_DTI", "Device Temperature Indication", "Conveys native device temperature to the platform"),
|
AH_PREDEF ("_DTI", "Device Temperature Indication", "Conveys native device temperature to the platform"),
|
||||||
AH_PREDEF ("_Exx", "Edge-Triggered GPE", "Method executed as a result of a general-purpose event"),
|
AH_PREDEF ("_Exx", "Edge-Triggered GPE, xx=0x00-0xFF", "Method executed as a result of a general-purpose event"),
|
||||||
AH_PREDEF ("_EC_", "Embedded Controller", "returns EC offset and query information"),
|
AH_PREDEF ("_EC_", "Embedded Controller", "returns EC offset and query information"),
|
||||||
AH_PREDEF ("_EDL", "Eject Device List", "Returns a list of devices that are dependent on a device (docking)"),
|
AH_PREDEF ("_EDL", "Eject Device List", "Returns a list of devices that are dependent on a device (docking)"),
|
||||||
AH_PREDEF ("_EJD", "Ejection Dependent Device", "Returns the name of dependent (parent) device (docking)"),
|
AH_PREDEF ("_EJD", "Ejection Dependent Device", "Returns the name of dependent (parent) device (docking)"),
|
||||||
AH_PREDEF ("_EJx", "Eject Device", "Begin or cancel a device ejection request (docking)"),
|
AH_PREDEF ("_EJx", "Eject Device, x=0-9", "Begin or cancel a device ejection request (docking)"),
|
||||||
AH_PREDEF ("_END", "Endianness", "Endian orientation, Resource Descriptor field"),
|
AH_PREDEF ("_END", "Endianness", "Endian orientation, Resource Descriptor field"),
|
||||||
AH_PREDEF ("_EVT", "Event", "Event method for GPIO events"),
|
AH_PREDEF ("_EVT", "Event", "Event method for GPIO events"),
|
||||||
AH_PREDEF ("_FDE", "Floppy Disk Enumerate", "Returns floppy disk configuration information"),
|
AH_PREDEF ("_FDE", "Floppy Disk Enumerate", "Returns floppy disk configuration information"),
|
||||||
@ -281,7 +281,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
|||||||
AH_PREDEF ("_INT", "Interrupts", "Interrupt mask bits, Resource Descriptor field"),
|
AH_PREDEF ("_INT", "Interrupts", "Interrupt mask bits, Resource Descriptor field"),
|
||||||
AH_PREDEF ("_IOR", "I/O Restriction", "Restriction type, Resource Descriptor field"),
|
AH_PREDEF ("_IOR", "I/O Restriction", "Restriction type, Resource Descriptor field"),
|
||||||
AH_PREDEF ("_IRC", "Inrush Current", "Presence indicates that a device has a significant inrush current draw"),
|
AH_PREDEF ("_IRC", "Inrush Current", "Presence indicates that a device has a significant inrush current draw"),
|
||||||
AH_PREDEF ("_Lxx", "Level-Triggered GPE", "Control method executed as a result of a general-purpose event"),
|
AH_PREDEF ("_Lxx", "Level-Triggered GPE, xx=0x00-0xFF", "Control method executed as a result of a general-purpose event"),
|
||||||
AH_PREDEF ("_LCK", "Lock Device", "Locks or unlocks a device (docking)"),
|
AH_PREDEF ("_LCK", "Lock Device", "Locks or unlocks a device (docking)"),
|
||||||
AH_PREDEF ("_LEN", "Length", "Range length, Resource Descriptor field"),
|
AH_PREDEF ("_LEN", "Length", "Range length, Resource Descriptor field"),
|
||||||
AH_PREDEF ("_LID", "Lid Status", "Returns the open/closed status of the lid on a mobile system"),
|
AH_PREDEF ("_LID", "Lid Status", "Returns the open/closed status of the lid on a mobile system"),
|
||||||
@ -358,7 +358,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
|||||||
AH_PREDEF ("_PTS", "Prepare To Sleep", "Inform the platform of an impending sleep transition"),
|
AH_PREDEF ("_PTS", "Prepare To Sleep", "Inform the platform of an impending sleep transition"),
|
||||||
AH_PREDEF ("_PUR", "Processor Utilization Request", "Returns the number of processors that the platform would like to idle"),
|
AH_PREDEF ("_PUR", "Processor Utilization Request", "Returns the number of processors that the platform would like to idle"),
|
||||||
AH_PREDEF ("_PXM", "Device Proximity", "Returns a device's proximity domain identifier"),
|
AH_PREDEF ("_PXM", "Device Proximity", "Returns a device's proximity domain identifier"),
|
||||||
AH_PREDEF ("_Qxx", "EC Query", "Embedded Controller query and SMBus Alarm control method"),
|
AH_PREDEF ("_Qxx", "EC Query, xx=0x00-0xFF", "Embedded Controller query and SMBus Alarm control method"),
|
||||||
AH_PREDEF ("_RBO", "Register Bit Offset", "Resource Descriptor field"),
|
AH_PREDEF ("_RBO", "Register Bit Offset", "Resource Descriptor field"),
|
||||||
AH_PREDEF ("_RBW", "Register Bit Width", "Resource Descriptor field"),
|
AH_PREDEF ("_RBW", "Register Bit Width", "Resource Descriptor field"),
|
||||||
AH_PREDEF ("_RDI", "Resource Dependencies for Idle", "Returns a list of dependencies for idle states"),
|
AH_PREDEF ("_RDI", "Resource Dependencies for Idle", "Returns a list of dependencies for idle states"),
|
||||||
@ -413,7 +413,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
|||||||
AH_PREDEF ("_SUB", "Subsystem ID", "Returns the subsystem ID for a device"),
|
AH_PREDEF ("_SUB", "Subsystem ID", "Returns the subsystem ID for a device"),
|
||||||
AH_PREDEF ("_SUN", "Slot User Number", "Returns the slot unique ID number"),
|
AH_PREDEF ("_SUN", "Slot User Number", "Returns the slot unique ID number"),
|
||||||
AH_PREDEF ("_SWS", "System Wake Source", "Returns the source event that caused the system to wake"),
|
AH_PREDEF ("_SWS", "System Wake Source", "Returns the source event that caused the system to wake"),
|
||||||
AH_PREDEF ("_T_x", "Emitted by ASL Compiler", "Reserved for use by ASL compilers"),
|
AH_PREDEF ("_T_x", "Emitted by ASL Compiler, x=0-9, A-Z", "Reserved for use by ASL compilers"),
|
||||||
AH_PREDEF ("_TC1", "Thermal Constant 1", "Returns TC1 for the passive cooling formula"),
|
AH_PREDEF ("_TC1", "Thermal Constant 1", "Returns TC1 for the passive cooling formula"),
|
||||||
AH_PREDEF ("_TC2", "Thermal Constant 2", "Returns TC2 for the passive cooling formula"),
|
AH_PREDEF ("_TC2", "Thermal Constant 2", "Returns TC2 for the passive cooling formula"),
|
||||||
AH_PREDEF ("_TDL", "T-State Depth Limit", "Returns the _TSS entry number of the lowest power throttling state"),
|
AH_PREDEF ("_TDL", "T-State Depth Limit", "Returns the _TSS entry number of the lowest power throttling state"),
|
||||||
@ -447,7 +447,7 @@ const AH_PREDEFINED_NAME AslPredefinedInfo[] =
|
|||||||
AH_PREDEF ("_VAL", "Pin Configuration Value", "Resource Descriptor field"),
|
AH_PREDEF ("_VAL", "Pin Configuration Value", "Resource Descriptor field"),
|
||||||
AH_PREDEF ("_VEN", "Vendor Data", "Resource Descriptor field"),
|
AH_PREDEF ("_VEN", "Vendor Data", "Resource Descriptor field"),
|
||||||
AH_PREDEF ("_VPO", "Video Post Options", "Returns the implemented video post options"),
|
AH_PREDEF ("_VPO", "Video Post Options", "Returns the implemented video post options"),
|
||||||
AH_PREDEF ("_Wxx", "Wake Event", "Method executed as a result of a wake event"),
|
AH_PREDEF ("_Wxx", "Wake Event, xx=0x00-0xFF", "Method executed as a result of a wake event"),
|
||||||
AH_PREDEF ("_WAK", "Wake", "Inform AML that the system has just awakened"),
|
AH_PREDEF ("_WAK", "Wake", "Inform AML that the system has just awakened"),
|
||||||
AH_PREDEF ("_WPC", "Wireless Power Calibration", "Calibrate power and notify wireless device"),
|
AH_PREDEF ("_WPC", "Wireless Power Calibration", "Calibrate power and notify wireless device"),
|
||||||
AH_PREDEF ("_WPP", "Wireless Power Polling", "Get recommended polling interval"),
|
AH_PREDEF ("_WPP", "Wireless Power Polling", "Get recommended polling interval"),
|
||||||
|
@ -325,6 +325,8 @@ AcpiDmClearTempList (
|
|||||||
* FUNCTION: AcpiDmIsSwitchBlock
|
* FUNCTION: AcpiDmIsSwitchBlock
|
||||||
*
|
*
|
||||||
* PARAMETERS: Op - While Object
|
* PARAMETERS: Op - While Object
|
||||||
|
* Temp - Where the compiler temp name is returned
|
||||||
|
* (_T_x)
|
||||||
*
|
*
|
||||||
* RETURN: TRUE if While block can be converted to a Switch/Case block
|
* RETURN: TRUE if While block can be converted to a Switch/Case block
|
||||||
*
|
*
|
||||||
@ -550,6 +552,10 @@ AcpiDmIsSwitchBlock (
|
|||||||
if (CurrentOp->Common.AmlOpcode == AML_ELSE_OP)
|
if (CurrentOp->Common.AmlOpcode == AML_ELSE_OP)
|
||||||
{
|
{
|
||||||
CurrentOp = CurrentOp->Common.Next;
|
CurrentOp = CurrentOp->Common.Next;
|
||||||
|
if (!CurrentOp)
|
||||||
|
{
|
||||||
|
return (FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ignore the Break Op */
|
/* Ignore the Break Op */
|
||||||
|
@ -773,12 +773,6 @@ CgWriteNode (
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) &&
|
|
||||||
AslGbl_DoExternals == FALSE)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Op->Asl.FinalAmlLength = 0;
|
Op->Asl.FinalAmlLength = 0;
|
||||||
|
|
||||||
switch (Op->Asl.AmlOpcode)
|
switch (Op->Asl.AmlOpcode)
|
||||||
|
@ -388,23 +388,20 @@ CmDoCompile (
|
|||||||
|
|
||||||
/* Resolve External Declarations */
|
/* Resolve External Declarations */
|
||||||
|
|
||||||
if (AslGbl_DoExternals)
|
Event = UtBeginEvent ("Resolve all Externals");
|
||||||
{
|
DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n");
|
||||||
Event = UtBeginEvent ("Resolve all Externals");
|
|
||||||
DbgPrint (ASL_DEBUG_OUTPUT, "\nResolve Externals\n\n");
|
|
||||||
|
|
||||||
if (AslGbl_DoExternalsInPlace)
|
if (AslGbl_DoExternalsInPlace)
|
||||||
{
|
{
|
||||||
TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
|
TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
|
||||||
ExAmlExternalWalkBegin, NULL, NULL);
|
ExAmlExternalWalkBegin, NULL, NULL);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
|
|
||||||
ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL);
|
|
||||||
}
|
|
||||||
UtEndEvent (Event);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TrWalkParseTree (AslGbl_ParseTreeRoot, ASL_WALK_VISIT_TWICE,
|
||||||
|
ExAmlExternalWalkBegin, ExAmlExternalWalkEnd, NULL);
|
||||||
|
}
|
||||||
|
UtEndEvent (Event);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Semantic analysis. This can happen only after the
|
* Semantic analysis. This can happen only after the
|
||||||
|
@ -474,6 +474,10 @@ ACPI_STATUS
|
|||||||
AslExpectException (
|
AslExpectException (
|
||||||
char *MessageIdString);
|
char *MessageIdString);
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AslElevateException (
|
||||||
|
char *MessageIdString);
|
||||||
|
|
||||||
ACPI_STATUS
|
ACPI_STATUS
|
||||||
AslDisableException (
|
AslDisableException (
|
||||||
char *MessageIdString);
|
char *MessageIdString);
|
||||||
|
@ -201,6 +201,11 @@ AePrintSubError (
|
|||||||
FILE *OutputFile,
|
FILE *OutputFile,
|
||||||
ASL_ERROR_MSG *Enode);
|
ASL_ERROR_MSG *Enode);
|
||||||
|
|
||||||
|
static UINT8
|
||||||
|
GetModifiedLevel (
|
||||||
|
UINT8 Level,
|
||||||
|
UINT16 MessageId);
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
@ -968,11 +973,12 @@ AslLogNewError (
|
|||||||
ASL_ERROR_MSG *SubError)
|
ASL_ERROR_MSG *SubError)
|
||||||
{
|
{
|
||||||
ASL_ERROR_MSG *Enode = NULL;
|
ASL_ERROR_MSG *Enode = NULL;
|
||||||
|
UINT8 ModifiedLevel = GetModifiedLevel (Level, MessageId);
|
||||||
|
|
||||||
|
|
||||||
AslInitEnode (&Enode, Level, MessageId, LineNumber, LogicalLineNumber,
|
AslInitEnode (&Enode, ModifiedLevel, MessageId, LineNumber,
|
||||||
LogicalByteOffset, Column, Filename, Message, SourceLine,
|
LogicalLineNumber, LogicalByteOffset, Column, Filename, Message,
|
||||||
SubError);
|
SourceLine, SubError);
|
||||||
|
|
||||||
/* Add the new node to the error node list */
|
/* Add the new node to the error node list */
|
||||||
|
|
||||||
@ -985,7 +991,7 @@ AslLogNewError (
|
|||||||
AePrintException (ASL_FILE_STDERR, Enode, NULL);
|
AePrintException (ASL_FILE_STDERR, Enode, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
AslGbl_ExceptionCount[Level]++;
|
AslGbl_ExceptionCount[ModifiedLevel]++;
|
||||||
if (AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
|
if (AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT)
|
||||||
{
|
{
|
||||||
printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT);
|
printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT);
|
||||||
@ -999,6 +1005,44 @@ AslLogNewError (
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: GetModifiedLevel
|
||||||
|
*
|
||||||
|
* PARAMETERS: Level - Seriousness (Warning/error, etc.)
|
||||||
|
* MessageId - Index into global message buffer
|
||||||
|
*
|
||||||
|
* RETURN: UINT8 - modified level
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Get the modified level of exception codes that are reported as
|
||||||
|
* errors from the -ww option.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
static UINT8
|
||||||
|
GetModifiedLevel (
|
||||||
|
UINT8 Level,
|
||||||
|
UINT16 MessageId)
|
||||||
|
{
|
||||||
|
UINT16 i;
|
||||||
|
UINT16 ExceptionCode;
|
||||||
|
|
||||||
|
|
||||||
|
ExceptionCode = AeBuildFullExceptionCode (Level, MessageId);
|
||||||
|
|
||||||
|
for (i = 0; i < AslGbl_ElevatedMessagesIndex; i++)
|
||||||
|
{
|
||||||
|
if (ExceptionCode == AslGbl_ElevatedMessages[i])
|
||||||
|
{
|
||||||
|
return (ASL_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Level);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AslIsExceptionIgnored
|
* FUNCTION: AslIsExceptionIgnored
|
||||||
@ -1155,6 +1199,51 @@ AslDisableException (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: AslElevateException
|
||||||
|
*
|
||||||
|
* PARAMETERS: MessageIdString - ID of excepted exception during compile
|
||||||
|
*
|
||||||
|
* RETURN: Status
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Enter a message ID into the global elevated exceptions table.
|
||||||
|
* These messages will be considered as compilation errors.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
ACPI_STATUS
|
||||||
|
AslElevateException (
|
||||||
|
char *MessageIdString)
|
||||||
|
{
|
||||||
|
UINT32 MessageId;
|
||||||
|
|
||||||
|
|
||||||
|
/* Convert argument to an integer and validate it */
|
||||||
|
|
||||||
|
MessageId = (UINT32) strtoul (MessageIdString, NULL, 0);
|
||||||
|
|
||||||
|
if (MessageId > 6999)
|
||||||
|
{
|
||||||
|
printf ("\"%s\" is not a valid warning/remark/erro ID\n",
|
||||||
|
MessageIdString);
|
||||||
|
return (AE_BAD_PARAMETER);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Insert value into the global expected message array */
|
||||||
|
|
||||||
|
if (AslGbl_ElevatedMessagesIndex >= ASL_MAX_ELEVATED_MESSAGES)
|
||||||
|
{
|
||||||
|
printf ("Too many messages have been registered as elevated (max %d)\n",
|
||||||
|
ASL_MAX_DISABLED_MESSAGES);
|
||||||
|
return (AE_LIMIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
AslGbl_ElevatedMessages[AslGbl_ExpectedMessagesIndex] = MessageId;
|
||||||
|
AslGbl_ElevatedMessagesIndex++;
|
||||||
|
return (AE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AslIsExceptionDisabled
|
* FUNCTION: AslIsExceptionDisabled
|
||||||
|
@ -255,6 +255,7 @@ extern int AslCompilerdebug;
|
|||||||
#define ASL_STRING_BUFFER_SIZE (1024 * 32) /* 32k */
|
#define ASL_STRING_BUFFER_SIZE (1024 * 32) /* 32k */
|
||||||
#define ASL_MAX_DISABLED_MESSAGES 32
|
#define ASL_MAX_DISABLED_MESSAGES 32
|
||||||
#define ASL_MAX_EXPECTED_MESSAGES 32
|
#define ASL_MAX_EXPECTED_MESSAGES 32
|
||||||
|
#define ASL_MAX_ELEVATED_MESSAGES 32
|
||||||
#define HEX_TABLE_LINE_SIZE 8
|
#define HEX_TABLE_LINE_SIZE 8
|
||||||
#define HEX_LISTING_LINE_SIZE 8
|
#define HEX_LISTING_LINE_SIZE 8
|
||||||
|
|
||||||
@ -319,7 +320,6 @@ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_AllExceptionsDisable
|
|||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_PruneParseTree, FALSE);
|
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_PruneParseTree, FALSE);
|
||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoTypechecking, TRUE);
|
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoTypechecking, TRUE);
|
||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_EnableReferenceTypechecking, FALSE);
|
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_EnableReferenceTypechecking, FALSE);
|
||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoExternals, TRUE);
|
|
||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoExternalsInPlace, FALSE);
|
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoExternalsInPlace, FALSE);
|
||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoAslConversion, FALSE);
|
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_DoAslConversion, FALSE);
|
||||||
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_OptimizeTrivialParseNodes, TRUE);
|
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (AslGbl_OptimizeTrivialParseNodes, TRUE);
|
||||||
@ -394,6 +394,7 @@ ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_CurrentAmlOffset, 0)
|
|||||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_CurrentLine, 0);
|
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_CurrentLine, 0);
|
||||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_DisabledMessagesIndex, 0);
|
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_DisabledMessagesIndex, 0);
|
||||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_ExpectedMessagesIndex, 0);
|
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_ExpectedMessagesIndex, 0);
|
||||||
|
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_ElevatedMessagesIndex, 0);
|
||||||
ASL_EXTERN UINT8 ASL_INIT_GLOBAL (AslGbl_HexBytesWereWritten, FALSE);
|
ASL_EXTERN UINT8 ASL_INIT_GLOBAL (AslGbl_HexBytesWereWritten, FALSE);
|
||||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_NumNamespaceObjects, 0);
|
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_NumNamespaceObjects, 0);
|
||||||
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_ReservedMethods, 0);
|
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (AslGbl_ReservedMethods, 0);
|
||||||
@ -435,6 +436,7 @@ ASL_EXTERN char AslGbl_StringBuffer[ASL_STRING_BUFFER_SIZE];
|
|||||||
ASL_EXTERN char AslGbl_StringBuffer2[ASL_STRING_BUFFER_SIZE];
|
ASL_EXTERN char AslGbl_StringBuffer2[ASL_STRING_BUFFER_SIZE];
|
||||||
ASL_EXTERN UINT32 AslGbl_DisabledMessages[ASL_MAX_DISABLED_MESSAGES];
|
ASL_EXTERN UINT32 AslGbl_DisabledMessages[ASL_MAX_DISABLED_MESSAGES];
|
||||||
ASL_EXTERN ASL_EXPECTED_MESSAGE AslGbl_ExpectedMessages[ASL_MAX_EXPECTED_MESSAGES];
|
ASL_EXTERN ASL_EXPECTED_MESSAGE AslGbl_ExpectedMessages[ASL_MAX_EXPECTED_MESSAGES];
|
||||||
|
ASL_EXTERN UINT32 AslGbl_ElevatedMessages[ASL_MAX_ELEVATED_MESSAGES];
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ASLGLOBAL_H */
|
#endif /* __ASLGLOBAL_H */
|
||||||
|
@ -209,6 +209,7 @@ Usage (
|
|||||||
ACPI_OPTION ("-vx <messageid>", "Expect a specific warning, remark, or error");
|
ACPI_OPTION ("-vx <messageid>", "Expect a specific warning, remark, or error");
|
||||||
ACPI_OPTION ("-w <1|2|3>", "Set warning reporting level");
|
ACPI_OPTION ("-w <1|2|3>", "Set warning reporting level");
|
||||||
ACPI_OPTION ("-we", "Report warnings as errors");
|
ACPI_OPTION ("-we", "Report warnings as errors");
|
||||||
|
ACPI_OPTION ("-ww <messageid>", "Report specific warning or remark as error");
|
||||||
|
|
||||||
printf ("\nAML Bytecode Generation (*.aml):\n");
|
printf ("\nAML Bytecode Generation (*.aml):\n");
|
||||||
ACPI_OPTION ("-oa", "Disable all optimizations (compatibility mode)");
|
ACPI_OPTION ("-oa", "Disable all optimizations (compatibility mode)");
|
||||||
|
@ -519,10 +519,7 @@ CgGenerateAmlLengths (
|
|||||||
|
|
||||||
case PARSEOP_EXTERNAL:
|
case PARSEOP_EXTERNAL:
|
||||||
|
|
||||||
if (AslGbl_DoExternals == TRUE)
|
CgGenerateAmlOpcodeLength (Op);
|
||||||
{
|
|
||||||
CgGenerateAmlOpcodeLength (Op);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -927,15 +927,6 @@ OpcGenerateAmlOpcode (
|
|||||||
AslGbl_HasIncludeFiles = TRUE;
|
AslGbl_HasIncludeFiles = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PARSEOP_EXTERNAL:
|
|
||||||
|
|
||||||
if (AslGbl_DoExternals == FALSE)
|
|
||||||
{
|
|
||||||
Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
|
|
||||||
Op->Asl.Child->Asl.Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PARSEOP_TIMER:
|
case PARSEOP_TIMER:
|
||||||
|
|
||||||
if (AcpiGbl_IntegerBitWidth == 32)
|
if (AcpiGbl_IntegerBitWidth == 32)
|
||||||
|
@ -982,6 +982,23 @@ AslDoOptions (
|
|||||||
AslGbl_WarningsAsErrors = TRUE;
|
AslGbl_WarningsAsErrors = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'w':
|
||||||
|
|
||||||
|
/* Get the required argument */
|
||||||
|
|
||||||
|
if (AcpiGetoptArgument (argc, argv))
|
||||||
|
{
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = AslElevateException (AcpiGbl_Optarg);
|
||||||
|
if (ACPI_FAILURE (Status))
|
||||||
|
{
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
|
printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
|
||||||
|
@ -460,11 +460,7 @@ TrTransformSubtree (
|
|||||||
|
|
||||||
case PARSEOP_EXTERNAL:
|
case PARSEOP_EXTERNAL:
|
||||||
|
|
||||||
if (AslGbl_DoExternals == TRUE)
|
ExDoExternal (Op);
|
||||||
{
|
|
||||||
ExDoExternal (Op);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PARSEOP___METHOD__:
|
case PARSEOP___METHOD__:
|
||||||
|
@ -720,6 +720,8 @@ AcpiDsCallControlMethod (
|
|||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NextWalkState->MethodNestingDepth = ThisWalkState->MethodNestingDepth + 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Delete the operands on the previous walkstate operand stack
|
* Delete the operands on the previous walkstate operand stack
|
||||||
* (they were copied to new objects)
|
* (they were copied to new objects)
|
||||||
@ -738,6 +740,16 @@ AcpiDsCallControlMethod (
|
|||||||
"**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
|
"**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
|
||||||
MethodNode->Name.Ascii, NextWalkState));
|
MethodNode->Name.Ascii, NextWalkState));
|
||||||
|
|
||||||
|
ThisWalkState->MethodPathname = AcpiNsGetNormalizedPathname (MethodNode, TRUE);
|
||||||
|
ThisWalkState->MethodIsNested = TRUE;
|
||||||
|
|
||||||
|
/* Optional object evaluation log */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
|
||||||
|
"%-26s: %*s%s\n", " Nested method call",
|
||||||
|
NextWalkState->MethodNestingDepth * 3, " ",
|
||||||
|
&ThisWalkState->MethodPathname[1]));
|
||||||
|
|
||||||
/* Invoke an internal method if necessary */
|
/* Invoke an internal method if necessary */
|
||||||
|
|
||||||
if (ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY)
|
if (ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY)
|
||||||
|
@ -161,7 +161,6 @@
|
|||||||
ACPI_MODULE_NAME ("dsobject")
|
ACPI_MODULE_NAME ("dsobject")
|
||||||
|
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiDsBuildInternalObject
|
* FUNCTION: AcpiDsBuildInternalObject
|
||||||
@ -460,7 +459,6 @@ AcpiDsCreateNode (
|
|||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ACPI_NO_METHOD_EXECUTION */
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -571,9 +569,7 @@ AcpiDsInitObjectFromOp (
|
|||||||
|
|
||||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
(void) AcpiExTruncateFor32bitTable (ObjDesc);
|
(void) AcpiExTruncateFor32bitTable (ObjDesc);
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AML_REVISION_OP:
|
case AML_REVISION_OP:
|
||||||
@ -594,7 +590,6 @@ AcpiDsInitObjectFromOp (
|
|||||||
|
|
||||||
ObjDesc->Integer.Value = Op->Common.Value.Integer;
|
ObjDesc->Integer.Value = Op->Common.Value.Integer;
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
if (AcpiExTruncateFor32bitTable (ObjDesc))
|
if (AcpiExTruncateFor32bitTable (ObjDesc))
|
||||||
{
|
{
|
||||||
/* Warn if we found a 64-bit constant in a 32-bit table */
|
/* Warn if we found a 64-bit constant in a 32-bit table */
|
||||||
@ -604,7 +599,6 @@ AcpiDsInitObjectFromOp (
|
|||||||
ACPI_FORMAT_UINT64 (Op->Common.Value.Integer),
|
ACPI_FORMAT_UINT64 (Op->Common.Value.Integer),
|
||||||
(UINT32) ObjDesc->Integer.Value));
|
(UINT32) ObjDesc->Integer.Value));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -642,12 +636,10 @@ AcpiDsInitObjectFromOp (
|
|||||||
ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_LOCAL_OP;
|
ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_LOCAL_OP;
|
||||||
ObjDesc->Reference.Class = ACPI_REFCLASS_LOCAL;
|
ObjDesc->Reference.Class = ACPI_REFCLASS_LOCAL;
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL,
|
Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL,
|
||||||
ObjDesc->Reference.Value, WalkState,
|
ObjDesc->Reference.Value, WalkState,
|
||||||
ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
|
ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
|
||||||
&ObjDesc->Reference.Object));
|
&ObjDesc->Reference.Object));
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AML_TYPE_METHOD_ARGUMENT:
|
case AML_TYPE_METHOD_ARGUMENT:
|
||||||
@ -657,12 +649,10 @@ AcpiDsInitObjectFromOp (
|
|||||||
ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_ARG_OP;
|
ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_FIRST_ARG_OP;
|
||||||
ObjDesc->Reference.Class = ACPI_REFCLASS_ARG;
|
ObjDesc->Reference.Class = ACPI_REFCLASS_ARG;
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG,
|
Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG,
|
||||||
ObjDesc->Reference.Value, WalkState,
|
ObjDesc->Reference.Value, WalkState,
|
||||||
ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
|
ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE,
|
||||||
&ObjDesc->Reference.Object));
|
&ObjDesc->Reference.Object));
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default: /* Object name or Debug object */
|
default: /* Object name or Debug object */
|
||||||
|
@ -308,6 +308,32 @@ AcpiDsBuildInternalPackageObj (
|
|||||||
{
|
{
|
||||||
if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)
|
if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP)
|
||||||
{
|
{
|
||||||
|
if (!Arg->Common.Node)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* This is the case where an expression has returned a value.
|
||||||
|
* The use of expressions (TermArgs) within individual
|
||||||
|
* package elements is not supported by the AML interpreter,
|
||||||
|
* even though the ASL grammar supports it. Example:
|
||||||
|
*
|
||||||
|
* Name (INT1, 0x1234)
|
||||||
|
*
|
||||||
|
* Name (PKG3, Package () {
|
||||||
|
* Add (INT1, 0xAAAA0000)
|
||||||
|
* })
|
||||||
|
*
|
||||||
|
* 1) No known AML interpreter supports this type of construct
|
||||||
|
* 2) This fixes a fault if the construct is encountered
|
||||||
|
*/
|
||||||
|
ACPI_EXCEPTION ((AE_INFO, AE_SUPPORT,
|
||||||
|
"Expressions within package elements are not supported"));
|
||||||
|
|
||||||
|
/* Cleanup the return object, it is not needed */
|
||||||
|
|
||||||
|
AcpiUtRemoveReference (WalkState->Results->Results.ObjDesc[0]);
|
||||||
|
return_ACPI_STATUS (AE_SUPPORT);
|
||||||
|
}
|
||||||
|
|
||||||
if (Arg->Common.Node->Type == ACPI_TYPE_METHOD)
|
if (Arg->Common.Node->Type == ACPI_TYPE_METHOD)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -209,7 +209,6 @@ AcpiDsClearImplicitReturn (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiDsDoImplicitReturn
|
* FUNCTION: AcpiDsDoImplicitReturn
|
||||||
@ -583,7 +582,6 @@ AcpiDsClearOperands (
|
|||||||
WalkState->NumOperands = 0;
|
WalkState->NumOperands = 0;
|
||||||
return_VOID;
|
return_VOID;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
@ -221,12 +221,10 @@ AcpiDsInitCallbacks (
|
|||||||
|
|
||||||
/* Execution pass */
|
/* Execution pass */
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
WalkState->ParseFlags |= ACPI_PARSE_EXECUTE |
|
WalkState->ParseFlags |= ACPI_PARSE_EXECUTE |
|
||||||
ACPI_PARSE_DELETE_TREE;
|
ACPI_PARSE_DELETE_TREE;
|
||||||
WalkState->DescendingCallback = AcpiDsExecBeginOp;
|
WalkState->DescendingCallback = AcpiDsExecBeginOp;
|
||||||
WalkState->AscendingCallback = AcpiDsExecEndOp;
|
WalkState->AscendingCallback = AcpiDsExecEndOp;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -517,7 +515,7 @@ AcpiDsLoad1BeginOp (
|
|||||||
|
|
||||||
/* Initialize the op */
|
/* Initialize the op */
|
||||||
|
|
||||||
#if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY))
|
#ifdef ACPI_CONSTANT_EVAL_ONLY
|
||||||
Op->Named.Path = Path;
|
Op->Named.Path = Path;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -580,7 +578,6 @@ AcpiDsLoad1EndOp (
|
|||||||
|
|
||||||
ObjectType = WalkState->OpInfo->ObjectType;
|
ObjectType = WalkState->OpInfo->ObjectType;
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
if (WalkState->OpInfo->Flags & AML_FIELD)
|
if (WalkState->OpInfo->Flags & AML_FIELD)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -626,7 +623,6 @@ AcpiDsLoad1EndOp (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (Op->Common.AmlOpcode == AML_NAME_OP)
|
if (Op->Common.AmlOpcode == AML_NAME_OP)
|
||||||
{
|
{
|
||||||
|
@ -529,10 +529,8 @@ AcpiDsLoad2EndOp (
|
|||||||
ACPI_NAMESPACE_NODE *Node;
|
ACPI_NAMESPACE_NODE *Node;
|
||||||
ACPI_PARSE_OBJECT *Arg;
|
ACPI_PARSE_OBJECT *Arg;
|
||||||
ACPI_NAMESPACE_NODE *NewNode;
|
ACPI_NAMESPACE_NODE *NewNode;
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
UINT8 RegionSpace;
|
UINT8 RegionSpace;
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE (DsLoad2EndOp);
|
ACPI_FUNCTION_TRACE (DsLoad2EndOp);
|
||||||
@ -622,7 +620,6 @@ AcpiDsLoad2EndOp (
|
|||||||
|
|
||||||
switch (WalkState->OpInfo->Type)
|
switch (WalkState->OpInfo->Type)
|
||||||
{
|
{
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
|
|
||||||
case AML_TYPE_CREATE_FIELD:
|
case AML_TYPE_CREATE_FIELD:
|
||||||
/*
|
/*
|
||||||
@ -718,13 +715,11 @@ AcpiDsLoad2EndOp (
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
#endif /* ACPI_NO_METHOD_EXECUTION */
|
|
||||||
|
|
||||||
case AML_TYPE_NAMED_COMPLEX:
|
case AML_TYPE_NAMED_COMPLEX:
|
||||||
|
|
||||||
switch (Op->Common.AmlOpcode)
|
switch (Op->Common.AmlOpcode)
|
||||||
{
|
{
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
case AML_REGION_OP:
|
case AML_REGION_OP:
|
||||||
case AML_DATA_REGION_OP:
|
case AML_DATA_REGION_OP:
|
||||||
|
|
||||||
@ -809,7 +804,6 @@ AcpiDsLoad2EndOp (
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#endif /* ACPI_NO_METHOD_EXECUTION */
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
@ -733,7 +733,7 @@ AcpiDsCreateWalkState (
|
|||||||
|
|
||||||
/* Init the method args/local */
|
/* Init the method args/local */
|
||||||
|
|
||||||
#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
|
#ifndef ACPI_CONSTANT_EVAL_ONLY
|
||||||
AcpiDsMethodDataInit (WalkState);
|
AcpiDsMethodDataInit (WalkState);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -496,7 +496,7 @@ AcpiExConvertToAscii (
|
|||||||
|
|
||||||
/* HexLength: 2 ascii hex chars per data byte */
|
/* HexLength: 2 ascii hex chars per data byte */
|
||||||
|
|
||||||
HexLength = ACPI_MUL_2 (DataWidth);
|
HexLength = (DataWidth * 2);
|
||||||
for (i = 0, j = (HexLength-1); i < HexLength; i++, j--)
|
for (i = 0, j = (HexLength-1); i < HexLength; i++, j--)
|
||||||
{
|
{
|
||||||
/* Get one hex digit, most significant digits first */
|
/* Get one hex digit, most significant digits first */
|
||||||
@ -539,7 +539,8 @@ AcpiExConvertToAscii (
|
|||||||
*
|
*
|
||||||
* RETURN: Status
|
* RETURN: Status
|
||||||
*
|
*
|
||||||
* DESCRIPTION: Convert an ACPI Object to a string
|
* DESCRIPTION: Convert an ACPI Object to a string. Supports both implicit
|
||||||
|
* and explicit conversions and related rules.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
@ -574,9 +575,11 @@ AcpiExConvertToString (
|
|||||||
switch (Type)
|
switch (Type)
|
||||||
{
|
{
|
||||||
case ACPI_EXPLICIT_CONVERT_DECIMAL:
|
case ACPI_EXPLICIT_CONVERT_DECIMAL:
|
||||||
|
/*
|
||||||
/* Make room for maximum decimal number */
|
* From ToDecimalString, integer source.
|
||||||
|
*
|
||||||
|
* Make room for the maximum decimal number size
|
||||||
|
*/
|
||||||
StringLength = ACPI_MAX_DECIMAL_DIGITS;
|
StringLength = ACPI_MAX_DECIMAL_DIGITS;
|
||||||
Base = 10;
|
Base = 10;
|
||||||
break;
|
break;
|
||||||
@ -620,8 +623,10 @@ AcpiExConvertToString (
|
|||||||
{
|
{
|
||||||
case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */
|
case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */
|
||||||
/*
|
/*
|
||||||
* From ACPI: "If Data is a buffer, it is converted to a string of
|
* Explicit conversion from the ToDecimalString ASL operator.
|
||||||
* decimal values separated by commas."
|
*
|
||||||
|
* From ACPI: "If the input is a buffer, it is converted to a
|
||||||
|
* a string of decimal values separated by commas."
|
||||||
*/
|
*/
|
||||||
Base = 10;
|
Base = 10;
|
||||||
|
|
||||||
@ -648,20 +653,29 @@ AcpiExConvertToString (
|
|||||||
|
|
||||||
case ACPI_IMPLICIT_CONVERT_HEX:
|
case ACPI_IMPLICIT_CONVERT_HEX:
|
||||||
/*
|
/*
|
||||||
|
* Implicit buffer-to-string conversion
|
||||||
|
*
|
||||||
* From the ACPI spec:
|
* From the ACPI spec:
|
||||||
*"The entire contents of the buffer are converted to a string of
|
* "The entire contents of the buffer are converted to a string of
|
||||||
* two-character hexadecimal numbers, each separated by a space."
|
* two-character hexadecimal numbers, each separated by a space."
|
||||||
|
*
|
||||||
|
* Each hex number is prefixed with 0x (11/2018)
|
||||||
*/
|
*/
|
||||||
Separator = ' ';
|
Separator = ' ';
|
||||||
StringLength = (ObjDesc->Buffer.Length * 3);
|
StringLength = (ObjDesc->Buffer.Length * 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_EXPLICIT_CONVERT_HEX: /* Used by ToHexString */
|
case ACPI_EXPLICIT_CONVERT_HEX:
|
||||||
/*
|
/*
|
||||||
|
* Explicit conversion from the ToHexString ASL operator.
|
||||||
|
*
|
||||||
* From ACPI: "If Data is a buffer, it is converted to a string of
|
* From ACPI: "If Data is a buffer, it is converted to a string of
|
||||||
* hexadecimal values separated by commas."
|
* hexadecimal values separated by commas."
|
||||||
|
*
|
||||||
|
* Each hex number is prefixed with 0x (11/2018)
|
||||||
*/
|
*/
|
||||||
StringLength = (ObjDesc->Buffer.Length * 3);
|
Separator = ',';
|
||||||
|
StringLength = (ObjDesc->Buffer.Length * 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -692,9 +706,20 @@ AcpiExConvertToString (
|
|||||||
*/
|
*/
|
||||||
for (i = 0; i < ObjDesc->Buffer.Length; i++)
|
for (i = 0; i < ObjDesc->Buffer.Length; i++)
|
||||||
{
|
{
|
||||||
|
if (Base == 16)
|
||||||
|
{
|
||||||
|
/* Emit 0x prefix for explict/implicit hex conversion */
|
||||||
|
|
||||||
|
*NewBuf++ = '0';
|
||||||
|
*NewBuf++ = 'x';
|
||||||
|
}
|
||||||
|
|
||||||
NewBuf += AcpiExConvertToAscii (
|
NewBuf += AcpiExConvertToAscii (
|
||||||
(UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
|
(UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
|
||||||
*NewBuf++ = Separator; /* each separated by a comma or space */
|
|
||||||
|
/* Each digit is separated by either a comma or space */
|
||||||
|
|
||||||
|
*NewBuf++ = Separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -161,7 +161,6 @@
|
|||||||
ACPI_MODULE_NAME ("excreate")
|
ACPI_MODULE_NAME ("excreate")
|
||||||
|
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiExCreateAlias
|
* FUNCTION: AcpiExCreateAlias
|
||||||
@ -573,7 +572,6 @@ AcpiExCreatePowerResource (
|
|||||||
AcpiUtRemoveReference (ObjDesc);
|
AcpiUtRemoveReference (ObjDesc);
|
||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
@ -460,9 +460,9 @@ AcpiExOpcode_2A_1T_1R (
|
|||||||
* NOTE: A length of zero is ok, and will create a zero-length, null
|
* NOTE: A length of zero is ok, and will create a zero-length, null
|
||||||
* terminated string.
|
* terminated string.
|
||||||
*/
|
*/
|
||||||
while ((Length < Operand[0]->Buffer.Length) &&
|
while ((Length < Operand[0]->Buffer.Length) && /* Length of input buffer */
|
||||||
(Length < Operand[1]->Integer.Value) &&
|
(Length < Operand[1]->Integer.Value) && /* Length operand */
|
||||||
(Operand[0]->Buffer.Pointer[Length]))
|
(Operand[0]->Buffer.Pointer[Length])) /* Null terminator */
|
||||||
{
|
{
|
||||||
Length++;
|
Length++;
|
||||||
}
|
}
|
||||||
|
@ -445,14 +445,12 @@ AcpiExWriteSerialBus (
|
|||||||
case ACPI_ADR_SPACE_SMBUS:
|
case ACPI_ADR_SPACE_SMBUS:
|
||||||
|
|
||||||
BufferLength = ACPI_SMBUS_BUFFER_SIZE;
|
BufferLength = ACPI_SMBUS_BUFFER_SIZE;
|
||||||
DataLength = ACPI_SMBUS_DATA_SIZE;
|
|
||||||
Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
|
Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACPI_ADR_SPACE_IPMI:
|
case ACPI_ADR_SPACE_IPMI:
|
||||||
|
|
||||||
BufferLength = ACPI_IPMI_BUFFER_SIZE;
|
BufferLength = ACPI_IPMI_BUFFER_SIZE;
|
||||||
DataLength = ACPI_IPMI_DATA_SIZE;
|
|
||||||
Function = ACPI_WRITE;
|
Function = ACPI_WRITE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -471,7 +469,6 @@ AcpiExWriteSerialBus (
|
|||||||
/* Add header length to get the full size of the buffer */
|
/* Add header length to get the full size of the buffer */
|
||||||
|
|
||||||
BufferLength += ACPI_SERIAL_HEADER_SIZE;
|
BufferLength += ACPI_SERIAL_HEADER_SIZE;
|
||||||
DataLength = SourceDesc->Buffer.Pointer[1];
|
|
||||||
Function = ACPI_WRITE | (AccessorType << 16);
|
Function = ACPI_WRITE | (AccessorType << 16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -479,21 +476,6 @@ AcpiExWriteSerialBus (
|
|||||||
return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
|
return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
OBSOLETE?
|
|
||||||
/* Check for possible buffer overflow */
|
|
||||||
|
|
||||||
if (DataLength > SourceDesc->Buffer.Length)
|
|
||||||
{
|
|
||||||
ACPI_ERROR ((AE_INFO,
|
|
||||||
"Length in buffer header (%u)(%u) is greater than "
|
|
||||||
"the physical buffer length (%u) and will overflow",
|
|
||||||
DataLength, BufferLength, SourceDesc->Buffer.Length));
|
|
||||||
|
|
||||||
return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Create the transfer/bidirectional/return buffer */
|
/* Create the transfer/bidirectional/return buffer */
|
||||||
|
|
||||||
BufferDesc = AcpiUtCreateBufferObject (BufferLength);
|
BufferDesc = AcpiUtCreateBufferObject (BufferLength);
|
||||||
@ -505,6 +487,8 @@ OBSOLETE?
|
|||||||
/* Copy the input buffer data to the transfer buffer */
|
/* Copy the input buffer data to the transfer buffer */
|
||||||
|
|
||||||
Buffer = BufferDesc->Buffer.Pointer;
|
Buffer = BufferDesc->Buffer.Pointer;
|
||||||
|
DataLength = (BufferLength < SourceDesc->Buffer.Length ?
|
||||||
|
BufferLength : SourceDesc->Buffer.Length);
|
||||||
memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength);
|
memcpy (Buffer, SourceDesc->Buffer.Pointer, DataLength);
|
||||||
|
|
||||||
/* Lock entire transaction if requested */
|
/* Lock entire transaction if requested */
|
||||||
|
@ -181,7 +181,6 @@ AcpiExDigitsNeeded (
|
|||||||
UINT32 Base);
|
UINT32 Base);
|
||||||
|
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiExEnterInterpreter
|
* FUNCTION: AcpiExEnterInterpreter
|
||||||
@ -615,4 +614,3 @@ AcpiIsValidSpaceId (
|
|||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -259,6 +259,12 @@ AcpiNsEvaluate (
|
|||||||
return_ACPI_STATUS (AE_NO_MEMORY);
|
return_ACPI_STATUS (AE_NO_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Optional object evaluation log */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
|
||||||
|
"%-26s: %s (%s)\n", " Enter evaluation",
|
||||||
|
&Info->FullPathname[1], AcpiUtGetTypeName (Info->Node->Type)));
|
||||||
|
|
||||||
/* Count the number of arguments being passed in */
|
/* Count the number of arguments being passed in */
|
||||||
|
|
||||||
Info->ParamCount = 0;
|
Info->ParamCount = 0;
|
||||||
@ -445,6 +451,12 @@ AcpiNsEvaluate (
|
|||||||
Info->RelativePathname));
|
Info->RelativePathname));
|
||||||
|
|
||||||
Cleanup:
|
Cleanup:
|
||||||
|
/* Optional object evaluation log */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
|
||||||
|
"%-26s: %s\n", " Exit evaluation",
|
||||||
|
&Info->FullPathname[1]));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Namespace was unlocked by the handling AcpiNs* function, so we
|
* Namespace was unlocked by the handling AcpiNs* function, so we
|
||||||
* just free the pathname and return
|
* just free the pathname and return
|
||||||
|
@ -173,7 +173,6 @@ AcpiNsDeleteSubtree (
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AcpiNsLoadTable
|
* FUNCTION: AcpiNsLoadTable
|
||||||
@ -477,4 +476,3 @@ AcpiNsUnloadNamespace (
|
|||||||
return_ACPI_STATUS (Status);
|
return_ACPI_STATUS (Status);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
@ -261,8 +261,18 @@ AcpiNsExecuteTable (
|
|||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Optional object evaluation log */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
|
||||||
|
"%-26s: (Definition Block level)\n", "Module-level evaluation"));
|
||||||
|
|
||||||
Status = AcpiPsExecuteTable (Info);
|
Status = AcpiPsExecuteTable (Info);
|
||||||
|
|
||||||
|
/* Optional object evaluation log */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION,
|
||||||
|
"%-26s: (Definition Block level)\n", "Module-level complete"));
|
||||||
|
|
||||||
Cleanup:
|
Cleanup:
|
||||||
if (Info)
|
if (Info)
|
||||||
{
|
{
|
||||||
|
@ -580,7 +580,7 @@ AcpiPsParseLoop (
|
|||||||
ParserState = &WalkState->ParserState;
|
ParserState = &WalkState->ParserState;
|
||||||
WalkState->ArgTypes = 0;
|
WalkState->ArgTypes = 0;
|
||||||
|
|
||||||
#if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY))
|
#ifndef ACPI_CONSTANT_EVAL_ONLY
|
||||||
|
|
||||||
if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART)
|
if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART)
|
||||||
{
|
{
|
||||||
|
@ -637,6 +637,18 @@ AcpiPsParseAml (
|
|||||||
"Completed one call to walk loop, %s State=%p\n",
|
"Completed one call to walk loop, %s State=%p\n",
|
||||||
AcpiFormatException (Status), WalkState));
|
AcpiFormatException (Status), WalkState));
|
||||||
|
|
||||||
|
if (WalkState->MethodPathname && WalkState->MethodIsNested)
|
||||||
|
{
|
||||||
|
/* Optional object evaluation log */
|
||||||
|
|
||||||
|
ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EVALUATION, "%-26s: %*s%s\n",
|
||||||
|
" Exit nested method",
|
||||||
|
(WalkState->MethodNestingDepth + 1) * 3, " ",
|
||||||
|
&WalkState->MethodPathname[1]));
|
||||||
|
|
||||||
|
ACPI_FREE (WalkState->MethodPathname);
|
||||||
|
WalkState->MethodIsNested = FALSE;
|
||||||
|
}
|
||||||
if (Status == AE_CTRL_TRANSFER)
|
if (Status == AE_CTRL_TRANSFER)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -307,6 +307,9 @@ AcpiPsExecuteMethod (
|
|||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WalkState->MethodPathname = Info->FullPathname;
|
||||||
|
WalkState->MethodIsNested = FALSE;
|
||||||
|
|
||||||
if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
||||||
{
|
{
|
||||||
WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
|
WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
|
||||||
@ -437,6 +440,9 @@ AcpiPsExecuteTable (
|
|||||||
goto Cleanup;
|
goto Cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WalkState->MethodPathname = Info->FullPathname;
|
||||||
|
WalkState->MethodIsNested = FALSE;
|
||||||
|
|
||||||
if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
|
||||||
{
|
{
|
||||||
WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
|
WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL;
|
||||||
|
@ -235,10 +235,7 @@ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] =
|
|||||||
{"_REV", ACPI_TYPE_INTEGER, ACPI_CAST_PTR (char, 2)},
|
{"_REV", ACPI_TYPE_INTEGER, ACPI_CAST_PTR (char, 2)},
|
||||||
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
|
{"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME},
|
||||||
{"_GL_", ACPI_TYPE_MUTEX, ACPI_CAST_PTR (char, 1)},
|
{"_GL_", ACPI_TYPE_MUTEX, ACPI_CAST_PTR (char, 1)},
|
||||||
|
|
||||||
#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
|
|
||||||
{"_OSI", ACPI_TYPE_METHOD, ACPI_CAST_PTR (char, 1)},
|
{"_OSI", ACPI_TYPE_METHOD, ACPI_CAST_PTR (char, 1)},
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Table terminator */
|
/* Table terminator */
|
||||||
|
|
||||||
|
@ -217,7 +217,8 @@ AcpiUtIsAmlTable (
|
|||||||
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
|
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) ||
|
||||||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
|
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) ||
|
||||||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
|
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) ||
|
||||||
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT))
|
ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_OSDT) ||
|
||||||
|
ACPI_IS_OEM_SIG (Table->Signature))
|
||||||
{
|
{
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
@ -217,6 +217,8 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
|
|||||||
{"Windows 2016", NULL, 0, ACPI_OSI_WIN_10_RS1}, /* Windows 10 version 1607 - Added 12/2017 */
|
{"Windows 2016", NULL, 0, ACPI_OSI_WIN_10_RS1}, /* Windows 10 version 1607 - Added 12/2017 */
|
||||||
{"Windows 2017", NULL, 0, ACPI_OSI_WIN_10_RS2}, /* Windows 10 version 1703 - Added 12/2017 */
|
{"Windows 2017", NULL, 0, ACPI_OSI_WIN_10_RS2}, /* Windows 10 version 1703 - Added 12/2017 */
|
||||||
{"Windows 2017.2", NULL, 0, ACPI_OSI_WIN_10_RS3}, /* Windows 10 version 1709 - Added 02/2018 */
|
{"Windows 2017.2", NULL, 0, ACPI_OSI_WIN_10_RS3}, /* Windows 10 version 1709 - Added 02/2018 */
|
||||||
|
{"Windows 2018", NULL, 0, ACPI_OSI_WIN_10_RS4}, /* Windows 10 version 1803 - Added 11/2018 */
|
||||||
|
{"Windows 2018.2", NULL, 0, ACPI_OSI_WIN_10_RS5}, /* Windows 10 version 1809 - Added 11/2018 */
|
||||||
|
|
||||||
/* Feature Group Strings */
|
/* Feature Group Strings */
|
||||||
|
|
||||||
|
@ -317,11 +317,7 @@ ACPI_GLOBAL (BOOLEAN, AcpiGbl_DisableMemTracking);
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)
|
|
||||||
#define NUM_PREDEFINED_NAMES 10
|
#define NUM_PREDEFINED_NAMES 10
|
||||||
#else
|
|
||||||
#define NUM_PREDEFINED_NAMES 9
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ACPI_GLOBAL (ACPI_NAMESPACE_NODE, AcpiGbl_RootNodeStruct);
|
ACPI_GLOBAL (ACPI_NAMESPACE_NODE, AcpiGbl_RootNodeStruct);
|
||||||
ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_RootNode);
|
ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_RootNode);
|
||||||
|
@ -216,7 +216,8 @@
|
|||||||
#define ACPI_LV_RESOURCES 0x00010000
|
#define ACPI_LV_RESOURCES 0x00010000
|
||||||
#define ACPI_LV_USER_REQUESTS 0x00020000
|
#define ACPI_LV_USER_REQUESTS 0x00020000
|
||||||
#define ACPI_LV_PACKAGE 0x00040000
|
#define ACPI_LV_PACKAGE 0x00040000
|
||||||
#define ACPI_LV_VERBOSITY1 0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS
|
#define ACPI_LV_EVALUATION 0x00080000
|
||||||
|
#define ACPI_LV_VERBOSITY1 0x000FFF40 | ACPI_LV_ALL_EXCEPTIONS
|
||||||
|
|
||||||
/* Trace verbosity level 2 [Function tracing and memory allocation] */
|
/* Trace verbosity level 2 [Function tracing and memory allocation] */
|
||||||
|
|
||||||
@ -285,6 +286,7 @@
|
|||||||
#define ACPI_DB_INTERRUPTS ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)
|
#define ACPI_DB_INTERRUPTS ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS)
|
||||||
#define ACPI_DB_USER_REQUESTS ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)
|
#define ACPI_DB_USER_REQUESTS ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS)
|
||||||
#define ACPI_DB_PACKAGE ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)
|
#define ACPI_DB_PACKAGE ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE)
|
||||||
|
#define ACPI_DB_EVALUATION ACPI_DEBUG_LEVEL (ACPI_LV_EVALUATION)
|
||||||
#define ACPI_DB_MUTEX ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)
|
#define ACPI_DB_MUTEX ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX)
|
||||||
#define ACPI_DB_EVENTS ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)
|
#define ACPI_DB_EVENTS ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS)
|
||||||
|
|
||||||
@ -292,7 +294,7 @@
|
|||||||
|
|
||||||
/* Defaults for DebugLevel, debug and normal */
|
/* Defaults for DebugLevel, debug and normal */
|
||||||
|
|
||||||
#define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
|
#define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_EVALUATION | ACPI_LV_REPAIR)
|
||||||
#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
|
#define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR)
|
||||||
#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
|
#define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@
|
|||||||
|
|
||||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||||
|
|
||||||
#define ACPI_CA_VERSION 0x20181031
|
#define ACPI_CA_VERSION 0x20181213
|
||||||
|
|
||||||
#include "acconfig.h"
|
#include "acconfig.h"
|
||||||
#include "actypes.h"
|
#include "actypes.h"
|
||||||
|
@ -205,6 +205,8 @@ typedef struct acpi_walk_state
|
|||||||
ACPI_PARSE_STATE ParserState; /* Current state of parser */
|
ACPI_PARSE_STATE ParserState; /* Current state of parser */
|
||||||
UINT32 PrevArgTypes;
|
UINT32 PrevArgTypes;
|
||||||
UINT32 ArgCount; /* push for fixed or var args */
|
UINT32 ArgCount; /* push for fixed or var args */
|
||||||
|
UINT16 MethodNestingDepth;
|
||||||
|
UINT8 MethodIsNested;
|
||||||
|
|
||||||
struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */
|
struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */
|
||||||
struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
|
struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */
|
||||||
@ -219,7 +221,8 @@ typedef struct acpi_walk_state
|
|||||||
struct acpi_namespace_node *MethodCallNode; /* Called method Node*/
|
struct acpi_namespace_node *MethodCallNode; /* Called method Node*/
|
||||||
ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */
|
ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */
|
||||||
union acpi_operand_object *MethodDesc; /* Method descriptor if running a method */
|
union acpi_operand_object *MethodDesc; /* Method descriptor if running a method */
|
||||||
struct acpi_namespace_node *MethodNode; /* Method node if running a method. */
|
struct acpi_namespace_node *MethodNode; /* Method node if running a method */
|
||||||
|
char *MethodPathname; /* Full pathname of running method */
|
||||||
ACPI_PARSE_OBJECT *Op; /* Current parser op */
|
ACPI_PARSE_OBJECT *Op; /* Current parser op */
|
||||||
const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */
|
const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */
|
||||||
ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */
|
ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */
|
||||||
|
@ -182,6 +182,7 @@
|
|||||||
#define ACPI_SIG_XSDT "XSDT" /* Extended System Description Table */
|
#define ACPI_SIG_XSDT "XSDT" /* Extended System Description Table */
|
||||||
#define ACPI_SIG_SSDT "SSDT" /* Secondary System Description Table */
|
#define ACPI_SIG_SSDT "SSDT" /* Secondary System Description Table */
|
||||||
#define ACPI_RSDP_NAME "RSDP" /* Short name for RSDP, not signature */
|
#define ACPI_RSDP_NAME "RSDP" /* Short name for RSDP, not signature */
|
||||||
|
#define ACPI_OEM_NAME "OEM" /* Short name for OEM, not signature */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -678,6 +678,10 @@ typedef UINT64 ACPI_INTEGER;
|
|||||||
#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
|
#define ACPI_VALIDATE_RSDP_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8))
|
||||||
#define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
|
#define ACPI_MAKE_RSDP_SIG(dest) (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8))
|
||||||
|
|
||||||
|
/* Support for OEMx signature (x can be any character) */
|
||||||
|
#define ACPI_IS_OEM_SIG(a) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_OEM_NAME, 3) &&\
|
||||||
|
strnlen (a, ACPI_NAME_SIZE) == ACPI_NAME_SIZE)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Algorithm to obtain access bit width.
|
* Algorithm to obtain access bit width.
|
||||||
* Can be used with AccessWidth of ACPI_GENERIC_ADDRESS and AccessSize of
|
* Can be used with AccessWidth of ACPI_GENERIC_ADDRESS and AccessSize of
|
||||||
@ -1512,6 +1516,8 @@ typedef enum
|
|||||||
#define ACPI_OSI_WIN_10_RS1 0x0E
|
#define ACPI_OSI_WIN_10_RS1 0x0E
|
||||||
#define ACPI_OSI_WIN_10_RS2 0x0F
|
#define ACPI_OSI_WIN_10_RS2 0x0F
|
||||||
#define ACPI_OSI_WIN_10_RS3 0x10
|
#define ACPI_OSI_WIN_10_RS3 0x10
|
||||||
|
#define ACPI_OSI_WIN_10_RS4 0x11
|
||||||
|
#define ACPI_OSI_WIN_10_RS5 0x12
|
||||||
|
|
||||||
|
|
||||||
/* Definitions of getopt */
|
/* Definitions of getopt */
|
||||||
|
@ -537,7 +537,11 @@ AbCompareAmlFiles (
|
|||||||
printf ("Compare offset: %u\n", AbGbl_CompareOffset);
|
printf ("Compare offset: %u\n", AbGbl_CompareOffset);
|
||||||
if (AbGbl_CompareOffset)
|
if (AbGbl_CompareOffset)
|
||||||
{
|
{
|
||||||
fseek (File2, AbGbl_CompareOffset, SEEK_CUR);
|
if (fseek (File2, AbGbl_CompareOffset, SEEK_CUR))
|
||||||
|
{
|
||||||
|
printf ("Seek error on file %s\n", File2Path);
|
||||||
|
goto Exit2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Actual1 = fread (&Char1, 1, 1, File1);
|
Actual1 = fread (&Char1, 1, 1, File1);
|
||||||
|
@ -266,6 +266,7 @@ usage (
|
|||||||
ACPI_OPTION ("-ef", "Enable display of final memory statistics");
|
ACPI_OPTION ("-ef", "Enable display of final memory statistics");
|
||||||
ACPI_OPTION ("-ei", "Enable additional tests for ACPICA interfaces");
|
ACPI_OPTION ("-ei", "Enable additional tests for ACPICA interfaces");
|
||||||
ACPI_OPTION ("-el", "Enable loading of additional test tables");
|
ACPI_OPTION ("-el", "Enable loading of additional test tables");
|
||||||
|
ACPI_OPTION ("-eo", "Enable object evaluation log");
|
||||||
ACPI_OPTION ("-es", "Enable Interpreter Slack Mode");
|
ACPI_OPTION ("-es", "Enable Interpreter Slack Mode");
|
||||||
ACPI_OPTION ("-et", "Enable debug semaphore timeout");
|
ACPI_OPTION ("-et", "Enable debug semaphore timeout");
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
@ -406,6 +407,12 @@ AeDoOptions (
|
|||||||
AcpiGbl_LoadTestTables = TRUE;
|
AcpiGbl_LoadTestTables = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'o':
|
||||||
|
|
||||||
|
AcpiDbgLevel |= ACPI_LV_EVALUATION;
|
||||||
|
AcpiGbl_DbConsoleDebugLevel |= ACPI_LV_EVALUATION;
|
||||||
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
|
|
||||||
AcpiGbl_EnableInterpreterSlack = TRUE;
|
AcpiGbl_EnableInterpreterSlack = TRUE;
|
||||||
|
@ -167,6 +167,10 @@ static void
|
|||||||
AhDisplayPredefinedInfo (
|
AhDisplayPredefinedInfo (
|
||||||
char *Name);
|
char *Name);
|
||||||
|
|
||||||
|
static void
|
||||||
|
AhDoSpecialNames (
|
||||||
|
char *Name);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
AhDisplayResourceName (
|
AhDisplayResourceName (
|
||||||
const ACPI_PREDEFINED_INFO *ThisName);
|
const ACPI_PREDEFINED_INFO *ThisName);
|
||||||
@ -293,15 +297,23 @@ AhFindPredefinedNames (
|
|||||||
{
|
{
|
||||||
UINT32 Length;
|
UINT32 Length;
|
||||||
BOOLEAN Found;
|
BOOLEAN Found;
|
||||||
char Name[9];
|
char Name[ACPI_NAME_SIZE + 1];
|
||||||
|
|
||||||
|
|
||||||
if (!NamePrefix || (NamePrefix[0] == '*'))
|
if (!NamePrefix || (*NamePrefix == '*'))
|
||||||
{
|
{
|
||||||
Found = AhDisplayPredefinedName (NULL, 0);
|
Found = AhDisplayPredefinedName (NULL, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Length = strlen (NamePrefix);
|
||||||
|
if (Length > ACPI_NAME_SIZE)
|
||||||
|
{
|
||||||
|
printf ("%.8s: Predefined name must be 4 characters maximum\n",
|
||||||
|
NamePrefix);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Contruct a local name or name prefix */
|
/* Contruct a local name or name prefix */
|
||||||
|
|
||||||
AcpiUtStrupr (NamePrefix);
|
AcpiUtStrupr (NamePrefix);
|
||||||
@ -311,14 +323,13 @@ AhFindPredefinedNames (
|
|||||||
}
|
}
|
||||||
|
|
||||||
Name[0] = '_';
|
Name[0] = '_';
|
||||||
AcpiUtSafeStrncpy (&Name[1], NamePrefix, 7);
|
AcpiUtSafeStrncpy (&Name[1], NamePrefix, 4);
|
||||||
|
|
||||||
Length = strlen (Name);
|
/* Check for special names such as _Exx, _ACx, etc. */
|
||||||
if (Length > ACPI_NAME_SIZE)
|
|
||||||
{
|
AhDoSpecialNames (Name);
|
||||||
printf ("%.8s: Predefined name must be 4 characters maximum\n", Name);
|
|
||||||
return;
|
/* Lookup and display the name(s) */
|
||||||
}
|
|
||||||
|
|
||||||
Found = AhDisplayPredefinedName (Name, Length);
|
Found = AhDisplayPredefinedName (Name, Length);
|
||||||
if (!Found)
|
if (!Found)
|
||||||
@ -328,6 +339,95 @@ AhFindPredefinedNames (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: AhDoSpecialNames
|
||||||
|
*
|
||||||
|
* PARAMETERS: Name - Name or prefix to find
|
||||||
|
*
|
||||||
|
* RETURN: None
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Detect and handle the "special" names such as _Exx, _ACx, etc.
|
||||||
|
*
|
||||||
|
* Current support:
|
||||||
|
* _EJx
|
||||||
|
* _Exx
|
||||||
|
* _Lxx
|
||||||
|
* _Qxx
|
||||||
|
* _Wxx
|
||||||
|
* _ACx
|
||||||
|
* _ALx
|
||||||
|
* _T_x
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
AhDoSpecialNames (
|
||||||
|
char *Name)
|
||||||
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check for the special names that have one or more numeric
|
||||||
|
* suffixes. For example, _Lxx can have 256 different flavors,
|
||||||
|
* from _L00 to _LFF.
|
||||||
|
*/
|
||||||
|
switch (Name[1])
|
||||||
|
{
|
||||||
|
case 'E':
|
||||||
|
if (Name[2] == 'J')
|
||||||
|
{
|
||||||
|
if (isdigit (Name[3]) || (Name[3] == 'X'))
|
||||||
|
{
|
||||||
|
/* _EJx */
|
||||||
|
|
||||||
|
Name[3] = 'x';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fallthrough */
|
||||||
|
|
||||||
|
case 'L':
|
||||||
|
case 'Q':
|
||||||
|
case 'W':
|
||||||
|
if ((isxdigit (Name[2]) && isxdigit (Name[3]))
|
||||||
|
||
|
||||||
|
((Name[2] == 'X') && (Name[3] == 'X')))
|
||||||
|
{
|
||||||
|
/* _Exx, _Lxx, _Qxx, or _Wxx */
|
||||||
|
|
||||||
|
Name[2] = 'x';
|
||||||
|
Name[3] = 'x';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'A':
|
||||||
|
if ((Name[2] == 'C') || (Name[2] == 'L'))
|
||||||
|
{
|
||||||
|
if (isdigit (Name[3]) || (Name[3] == 'X'))
|
||||||
|
{
|
||||||
|
/* _ACx or _ALx */
|
||||||
|
|
||||||
|
Name[3] = 'x';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'T':
|
||||||
|
if (Name[2] == '_')
|
||||||
|
{
|
||||||
|
/* _T_x (Reserved for iASL compiler */
|
||||||
|
|
||||||
|
Name[3] = 'x';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: AhDisplayPredefinedName
|
* FUNCTION: AhDisplayPredefinedName
|
||||||
@ -420,7 +520,7 @@ AhDisplayPredefinedInfo (
|
|||||||
|
|
||||||
/* NOTE: we check both tables always because there are some dupes */
|
/* NOTE: we check both tables always because there are some dupes */
|
||||||
|
|
||||||
/* Check against the predefine methods first */
|
/* Check against the predefined methods first */
|
||||||
|
|
||||||
ThisName = AcpiUtMatchPredefinedMethod (Name);
|
ThisName = AcpiUtMatchPredefinedMethod (Name);
|
||||||
if (ThisName)
|
if (ThisName)
|
||||||
|
@ -176,8 +176,8 @@ AxExtractTables (
|
|||||||
{
|
{
|
||||||
FILE *InputFile;
|
FILE *InputFile;
|
||||||
FILE *OutputFile = NULL;
|
FILE *OutputFile = NULL;
|
||||||
unsigned int BytesConverted;
|
int BytesConverted;
|
||||||
unsigned int ThisTableBytesWritten = 0;
|
int ThisTableBytesWritten = 0;
|
||||||
unsigned int FoundTable = 0;
|
unsigned int FoundTable = 0;
|
||||||
unsigned int Instances = 0;
|
unsigned int Instances = 0;
|
||||||
unsigned int ThisInstance;
|
unsigned int ThisInstance;
|
||||||
@ -323,8 +323,7 @@ AxExtractTables (
|
|||||||
|
|
||||||
/* Empty line or non-data line terminates the data block */
|
/* Empty line or non-data line terminates the data block */
|
||||||
|
|
||||||
BytesConverted = AxConvertAndWrite (OutputFile, ThisSignature,
|
BytesConverted = AxConvertAndWrite (OutputFile, ThisSignature);
|
||||||
ThisTableBytesWritten);
|
|
||||||
switch (BytesConverted)
|
switch (BytesConverted)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@ -334,6 +333,7 @@ AxExtractTables (
|
|||||||
|
|
||||||
case -1:
|
case -1:
|
||||||
|
|
||||||
|
Status = -1;
|
||||||
goto CleanupAndExit; /* There was a write error */
|
goto CleanupAndExit; /* There was a write error */
|
||||||
|
|
||||||
default: /* Normal case, get next line */
|
default: /* Normal case, get next line */
|
||||||
@ -397,8 +397,8 @@ AxExtractToMultiAmlFile (
|
|||||||
FILE *InputFile;
|
FILE *InputFile;
|
||||||
FILE *OutputFile;
|
FILE *OutputFile;
|
||||||
int Status = 0;
|
int Status = 0;
|
||||||
unsigned int TotalBytesWritten = 0;
|
int TotalBytesWritten = 0;
|
||||||
unsigned int ThisTableBytesWritten = 0;
|
int ThisTableBytesWritten = 0;
|
||||||
unsigned int BytesConverted;
|
unsigned int BytesConverted;
|
||||||
char ThisSignature[4];
|
char ThisSignature[4];
|
||||||
unsigned int State = AX_STATE_FIND_HEADER;
|
unsigned int State = AX_STATE_FIND_HEADER;
|
||||||
@ -494,8 +494,7 @@ AxExtractToMultiAmlFile (
|
|||||||
|
|
||||||
/* Empty line or non-data line terminates the data block */
|
/* Empty line or non-data line terminates the data block */
|
||||||
|
|
||||||
BytesConverted = AxConvertAndWrite (
|
BytesConverted = AxConvertAndWrite (OutputFile, ThisSignature);
|
||||||
OutputFile, ThisSignature, ThisTableBytesWritten);
|
|
||||||
switch (BytesConverted)
|
switch (BytesConverted)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@ -505,6 +504,7 @@ AxExtractToMultiAmlFile (
|
|||||||
|
|
||||||
case -1:
|
case -1:
|
||||||
|
|
||||||
|
Status = -1;
|
||||||
goto CleanupAndExit; /* There was a write error */
|
goto CleanupAndExit; /* There was a write error */
|
||||||
|
|
||||||
default: /* Normal case, get next line */
|
default: /* Normal case, get next line */
|
||||||
@ -561,6 +561,7 @@ AxListAllTables (
|
|||||||
FILE *InputFile;
|
FILE *InputFile;
|
||||||
unsigned char Header[48];
|
unsigned char Header[48];
|
||||||
UINT32 ByteCount = 0;
|
UINT32 ByteCount = 0;
|
||||||
|
UINT32 ThisLineByteCount;
|
||||||
unsigned int State = AX_STATE_FIND_HEADER;
|
unsigned int State = AX_STATE_FIND_HEADER;
|
||||||
|
|
||||||
|
|
||||||
@ -633,7 +634,15 @@ AxListAllTables (
|
|||||||
|
|
||||||
/* Convert header to hex and display it */
|
/* Convert header to hex and display it */
|
||||||
|
|
||||||
ByteCount += AxConvertToBinary (Gbl_LineBuffer, &Header[ByteCount]);
|
ThisLineByteCount = AxConvertToBinary (Gbl_LineBuffer,
|
||||||
|
&Header[ByteCount]);
|
||||||
|
if (ThisLineByteCount == EOF)
|
||||||
|
{
|
||||||
|
fclose (InputFile);
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ByteCount += ThisLineByteCount;
|
||||||
if (ByteCount >= sizeof (ACPI_TABLE_HEADER))
|
if (ByteCount >= sizeof (ACPI_TABLE_HEADER))
|
||||||
{
|
{
|
||||||
AxDumpTableHeader (Header);
|
AxDumpTableHeader (Header);
|
||||||
|
@ -276,13 +276,12 @@ BOOLEAN
|
|||||||
AxIsDataBlockHeader (
|
AxIsDataBlockHeader (
|
||||||
void);
|
void);
|
||||||
|
|
||||||
long
|
int
|
||||||
AxConvertAndWrite (
|
AxConvertAndWrite (
|
||||||
FILE *OutputFile,
|
FILE *OutputFile,
|
||||||
char *ThisSignature,
|
char *ThisSignature);
|
||||||
unsigned int ThisTableBytesWritten);
|
|
||||||
|
|
||||||
size_t
|
int
|
||||||
AxConvertToBinary (
|
AxConvertToBinary (
|
||||||
char *InputLine,
|
char *InputLine,
|
||||||
unsigned char *OutputData);
|
unsigned char *OutputData);
|
||||||
|
@ -427,7 +427,7 @@ AxNormalizeSignature (
|
|||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
size_t
|
int
|
||||||
AxConvertToBinary (
|
AxConvertToBinary (
|
||||||
char *InputLine,
|
char *InputLine,
|
||||||
unsigned char *OutputData)
|
unsigned char *OutputData)
|
||||||
@ -468,14 +468,22 @@ AxConvertToBinary (
|
|||||||
&Converted[8], &Converted[9], &Converted[10], &Converted[11],
|
&Converted[8], &Converted[9], &Converted[10], &Converted[11],
|
||||||
&Converted[12], &Converted[13], &Converted[14], &Converted[15]);
|
&Converted[12], &Converted[13], &Converted[14], &Converted[15]);
|
||||||
|
|
||||||
/* Pack converted data into a byte array */
|
if (BytesConverted == EOF)
|
||||||
|
{
|
||||||
|
printf ("EOF while converting ASCII line to binary\n");
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pack converted data into a byte array.
|
||||||
|
* Note: BytesConverted == 0 is acceptable.
|
||||||
|
*/
|
||||||
for (i = 0; i < BytesConverted; i++)
|
for (i = 0; i < BytesConverted; i++)
|
||||||
{
|
{
|
||||||
OutputData[i] = (unsigned char) Converted[i];
|
OutputData[i] = (unsigned char) Converted[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((size_t) BytesConverted);
|
return (BytesConverted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -603,7 +611,6 @@ AxGetNextInstance (
|
|||||||
*
|
*
|
||||||
* PARAMETERS: OutputFile - Where to write the binary data
|
* PARAMETERS: OutputFile - Where to write the binary data
|
||||||
* ThisSignature - Signature of current ACPI table
|
* ThisSignature - Signature of current ACPI table
|
||||||
* ThisTableBytesWritten - Total count of data written
|
|
||||||
*
|
*
|
||||||
* RETURN: Length of the converted line
|
* RETURN: Length of the converted line
|
||||||
*
|
*
|
||||||
@ -616,27 +623,29 @@ AxGetNextInstance (
|
|||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
long
|
int
|
||||||
AxConvertAndWrite (
|
AxConvertAndWrite (
|
||||||
FILE *OutputFile,
|
FILE *OutputFile,
|
||||||
char *ThisSignature,
|
char *ThisSignature)
|
||||||
unsigned int ThisTableBytesWritten)
|
|
||||||
{
|
{
|
||||||
size_t BytesWritten;
|
int BytesWritten;
|
||||||
size_t BytesConverted;
|
int BytesConverted;
|
||||||
|
|
||||||
|
|
||||||
/* Convert one line of ascii hex data to binary */
|
/* Convert one line of ascii hex data to binary */
|
||||||
|
|
||||||
BytesConverted = AxConvertToBinary (Gbl_LineBuffer, Gbl_BinaryData);
|
BytesConverted = AxConvertToBinary (Gbl_LineBuffer, Gbl_BinaryData);
|
||||||
|
if (BytesConverted == EOF)
|
||||||
/* Write the binary data */
|
{
|
||||||
|
return (EOF);
|
||||||
|
}
|
||||||
if (!BytesConverted)
|
if (!BytesConverted)
|
||||||
{
|
{
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Write the binary data */
|
||||||
|
|
||||||
BytesWritten = fwrite (Gbl_BinaryData, 1, BytesConverted, OutputFile);
|
BytesWritten = fwrite (Gbl_BinaryData, 1, BytesConverted, OutputFile);
|
||||||
if (BytesWritten != BytesConverted)
|
if (BytesWritten != BytesConverted)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user