summaryrefslogtreecommitdiff
path: root/source/compiler/asllisting.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler/asllisting.c')
-rw-r--r--source/compiler/asllisting.c95
1 files changed, 64 insertions, 31 deletions
diff --git a/source/compiler/asllisting.c b/source/compiler/asllisting.c
index 4923b7374db5..692d199e359a 100644
--- a/source/compiler/asllisting.c
+++ b/source/compiler/asllisting.c
@@ -163,16 +163,16 @@ LsGenerateListing (
LsDoOffsetTableHeader (FileId);
- TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, LsAmlOffsetWalk,
- NULL, (void *) ACPI_TO_POINTER (FileId));
+ TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
+ LsAmlOffsetWalk, NULL, (void *) ACPI_TO_POINTER (FileId));
LsDoOffsetTableFooter (FileId);
return;
}
/* Process all parse nodes */
- TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, LsAmlListingWalk,
- NULL, (void *) ACPI_TO_POINTER (FileId));
+ TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
+ LsAmlListingWalk, NULL, (void *) ACPI_TO_POINTER (FileId));
/* Final processing */
@@ -258,8 +258,12 @@ LsDumpParseTree (
}
DbgPrint (ASL_TREE_OUTPUT, "\nOriginal parse tree from parser:\n\n");
- TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD,
+ DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER1);
+
+ TrWalkParseTree (Gbl_ParseTreeRoot, ASL_WALK_VISIT_DOWNWARD,
LsTreeWriteWalk, NULL, NULL);
+
+ DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_HEADER1);
}
@@ -270,43 +274,69 @@ LsTreeWriteWalk (
void *Context)
{
- /* Debug output */
+ /* Dump ParseOp name and possible value */
- DbgPrint (ASL_TREE_OUTPUT,
- "%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level);
+ switch (Op->Asl.ParseOpcode)
+ {
+ case PARSEOP_NAMESEG:
+ case PARSEOP_NAMESTRING:
+ case PARSEOP_METHODCALL:
+ case PARSEOP_STRING_LITERAL:
- UtPrintFormattedName (Op->Asl.ParseOpcode, Level);
+ UtDumpStringOp (Op, Level);
+ break;
+
+ case PARSEOP_BYTECONST:
+
+ UtDumpIntegerOp (Op, Level, 2);
+ break;
+
+ case PARSEOP_WORDCONST:
+ case PARSEOP_PACKAGE_LENGTH:
+
+ UtDumpIntegerOp (Op, Level, 4);
+ break;
+
+ case PARSEOP_DWORDCONST:
+ case PARSEOP_EISAID:
+
+ UtDumpIntegerOp (Op, Level, 8);
+ break;
+
+ case PARSEOP_QWORDCONST:
+ case PARSEOP_INTEGER:
+ case PARSEOP_ONE:
+ case PARSEOP_ZERO:
+ case PARSEOP_ONES:
+
+ UtDumpIntegerOp (Op, Level, 16);
+ break;
+
+ case PARSEOP_INCLUDE:
- if (Op->Asl.ParseOpcode == PARSEOP_NAMESEG)
- {
- DbgPrint (ASL_TREE_OUTPUT,
- "%10.4s ", Op->Asl.Value.Name);
- }
- else if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) ||
- (Op->Asl.ParseOpcode == PARSEOP_METHODCALL))
- {
- DbgPrint (ASL_TREE_OUTPUT,
- "%10.32s ", Op->Asl.Value.String);
- }
- else if (Op->Asl.ParseOpcode == PARSEOP_INCLUDE)
- {
DbgPrint (ASL_TREE_OUTPUT,
"Open: %s\n", Op->Asl.Value.String);
return (AE_OK);
- }
- else if (Op->Asl.ParseOpcode == PARSEOP_INCLUDE_END)
- {
+
+ case PARSEOP_INCLUDE_END:
+
DbgPrint (ASL_TREE_OUTPUT,
"Close: %s\n", Op->Asl.Filename);
return (AE_OK);
+
+ default:
+
+ UtDumpBasicOp (Op, Level);
+ break;
}
- else
- {
- DbgPrint (ASL_TREE_OUTPUT, " ");
- }
- DbgPrint (ASL_TREE_OUTPUT, " (%.4X) Flags %8.8X",
- Op->Asl.ParseOpcode, Op->Asl.CompileFlags);
+ /* Dump the remaining data */
+
+ DbgPrint (ASL_TREE_OUTPUT, ASL_PARSE_TREE_DEBUG1,
+ Op->Asl.ParseOpcode, Op->Asl.CompileFlags,
+ Op->Asl.LineNumber, Op->Asl.EndLine,
+ Op->Asl.LogicalLineNumber, Op->Asl.EndLogicalLine);
+
TrPrintNodeCompileFlags (Op->Asl.CompileFlags);
DbgPrint (ASL_TREE_OUTPUT, "\n");
return (AE_OK);
@@ -399,6 +429,9 @@ LsWriteNodeToListing (
{
case PARSEOP_DEFINITION_BLOCK:
+ /* Always start a definition block at AML offset zero */
+
+ Gbl_CurrentAmlOffset = 0;
LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, FileId);
/* Use the table Signature and TableId to build a unique name */