svn commit: r207340 - in vendor-sys/acpica/dist: . common compiler debugger events executer include os_specific/service_layers tables tests tests/misc tools/acpiexec tools/acpisrc utilities

Jung-uk Kim jkim at FreeBSD.org
Wed Apr 28 21:50:59 UTC 2010


Author: jkim
Date: Wed Apr 28 21:50:57 2010
New Revision: 207340
URL: http://svn.freebsd.org/changeset/base/207340

Log:
  Import ACPICA 20100428.

Added:
  vendor-sys/acpica/dist/compiler/aslrestype1i.c   (contents, props changed)
  vendor-sys/acpica/dist/compiler/aslrestype2d.c   (contents, props changed)
  vendor-sys/acpica/dist/compiler/aslrestype2e.c   (contents, props changed)
  vendor-sys/acpica/dist/compiler/aslrestype2q.c   (contents, props changed)
  vendor-sys/acpica/dist/compiler/aslrestype2w.c   (contents, props changed)
  vendor-sys/acpica/dist/events/evgpeinit.c   (contents, props changed)
  vendor-sys/acpica/dist/events/evgpeutil.c   (contents, props changed)
  vendor-sys/acpica/dist/tests/
  vendor-sys/acpica/dist/tests/misc/
  vendor-sys/acpica/dist/tests/misc/badcode.asl
  vendor-sys/acpica/dist/tests/misc/grammar.asl
Modified:
  vendor-sys/acpica/dist/changes.txt
  vendor-sys/acpica/dist/common/adisasm.c
  vendor-sys/acpica/dist/compiler/Makefile
  vendor-sys/acpica/dist/compiler/aslcompile.c
  vendor-sys/acpica/dist/compiler/aslcompiler.h
  vendor-sys/acpica/dist/compiler/asldefine.h
  vendor-sys/acpica/dist/compiler/aslfiles.c
  vendor-sys/acpica/dist/compiler/aslglobal.h
  vendor-sys/acpica/dist/compiler/asllisting.c
  vendor-sys/acpica/dist/compiler/aslmain.c
  vendor-sys/acpica/dist/compiler/aslpredef.c
  vendor-sys/acpica/dist/compiler/aslresource.c
  vendor-sys/acpica/dist/compiler/aslrestype1.c
  vendor-sys/acpica/dist/compiler/aslrestype2.c
  vendor-sys/acpica/dist/compiler/asltypes.h
  vendor-sys/acpica/dist/debugger/dbcmds.c
  vendor-sys/acpica/dist/debugger/dbdisply.c
  vendor-sys/acpica/dist/events/evgpe.c
  vendor-sys/acpica/dist/events/evgpeblk.c
  vendor-sys/acpica/dist/executer/exconfig.c
  vendor-sys/acpica/dist/executer/exoparg1.c
  vendor-sys/acpica/dist/executer/exsystem.c
  vendor-sys/acpica/dist/include/acevents.h
  vendor-sys/acpica/dist/include/acglobal.h
  vendor-sys/acpica/dist/include/acinterp.h
  vendor-sys/acpica/dist/include/aclocal.h
  vendor-sys/acpica/dist/include/acpiosxf.h
  vendor-sys/acpica/dist/include/acpixf.h
  vendor-sys/acpica/dist/include/actypes.h
  vendor-sys/acpica/dist/include/amlresrc.h
  vendor-sys/acpica/dist/os_specific/service_layers/osunixxf.c
  vendor-sys/acpica/dist/os_specific/service_layers/oswinxf.c
  vendor-sys/acpica/dist/osunixxf.c
  vendor-sys/acpica/dist/tables/tbfind.c
  vendor-sys/acpica/dist/tables/tbinstal.c
  vendor-sys/acpica/dist/tables/tbutils.c
  vendor-sys/acpica/dist/tables/tbxface.c
  vendor-sys/acpica/dist/tools/acpiexec/Makefile
  vendor-sys/acpica/dist/tools/acpiexec/aeexec.c
  vendor-sys/acpica/dist/tools/acpiexec/aetables.c
  vendor-sys/acpica/dist/tools/acpisrc/astable.c
  vendor-sys/acpica/dist/utilities/utcopy.c
  vendor-sys/acpica/dist/utilities/utglobal.c
  vendor-sys/acpica/dist/utilities/uttrack.c

Modified: vendor-sys/acpica/dist/changes.txt
==============================================================================
--- vendor-sys/acpica/dist/changes.txt	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/changes.txt	Wed Apr 28 21:50:57 2010	(r207340)
@@ -1,4 +1,70 @@
 ----------------------------------------
+28 April 2010. Summary of changes for version 20100428:
+
+1) ACPI CA Core Subsystem:
+
+Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 
+including FADT-based and GPE Block Devices, execute any _PRW methods in the 
+new table, and process any _Lxx/_Exx GPE methods in the new table. Any 
+runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 
+immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 
+Devices. Provides compatibility with other ACPI implementations. Two new 
+files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob Moore.
+
+Fixed a regression introduced in version 20100331 within the table manager 
+where initial table loading could fail. This was introduced in the fix for 
+AcpiReallocateRootTable. Also, renamed some of fields in the table manager 
+data structures to clarify their meaning and use.
+
+Fixed a possible allocation overrun during internal object copy in 
+AcpiUtCopySimpleObject. The original code did not correctly handle the case 
+where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 847.
+
+Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 
+possible access beyond end-of-allocation. Also, now fully validate descriptor 
+(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
+
+Example Code and Data Size: These are the sizes for the OS-independent 
+acpica.lib produced by the Microsoft Visual C++ 6.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.
+
+  Previous Release:
+    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
+    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
+  Current Release:
+    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
+    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Implemented Min/Max/Len/Gran validation for address resource 
+descriptors. This change implements validation for the address fields that 
+are common to all address-type resource descriptors. These checks are 
+implemented: Checks for valid Min/Max, length within the Min/Max window, 
+valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per 
+table 6-40 in the ACPI 4.0a specification. Also split the large aslrestype1.c 
+and aslrestype2.c files into five new files. ACPICA BZ 840.
+
+iASL: Added support for the _Wxx predefined names. This support was missing 
+and these names were not recognized by the compiler as valid predefined 
+names. ACPICA BZ 851.
+
+iASL: Added an error for all predefined names that are defined to return no 
+value and thus must be implemented as Control Methods. These include all of 
+the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 
+names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
+
+iASL: Implemented the -ts option to emit hex AML data in ASL format, as an 
+ASL Buffer. Allows ACPI tables to be easily included within ASL files, to be 
+dynamically loaded via the Load() operator. Also cleaned up output for the -
+ta and -tc options. ACPICA BZ 853.
+
+Tests: Added a new file with examples of extended iASL error checking. 
+Demonstrates the advanced error checking ability of the iASL compiler. 
+Available at tests/misc/badcode.asl.
+
+----------------------------------------
 31 March 2010. Summary of changes for version 20100331:
 
 1) ACPI CA Core Subsystem:

Modified: vendor-sys/acpica/dist/common/adisasm.c
==============================================================================
--- vendor-sys/acpica/dist/common/adisasm.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/common/adisasm.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -282,8 +282,8 @@ AdInitialize (
 
     /* Setup the Table Manager (cheat - there is no RSDT) */
 
-    AcpiGbl_RootTableList.Size = 1;
-    AcpiGbl_RootTableList.Count = 0;
+    AcpiGbl_RootTableList.MaxTableCount = 1;
+    AcpiGbl_RootTableList.CurrentTableCount = 0;
     AcpiGbl_RootTableList.Tables = LocalTables;
 
     return (Status);
@@ -1156,7 +1156,7 @@ AdParseTable (
 
     /* If LoadTable is FALSE, we are parsing the last loaded table */
 
-    TableIndex = AcpiGbl_RootTableList.Count - 1;
+    TableIndex = AcpiGbl_RootTableList.CurrentTableCount - 1;
 
     /* Pass 2 */
 

Modified: vendor-sys/acpica/dist/compiler/Makefile
==============================================================================
--- vendor-sys/acpica/dist/compiler/Makefile	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/Makefile	Wed Apr 28 21:50:57 2010	(r207340)
@@ -1,11 +1,37 @@
  
-
 PROG=	iasl
-SRCS=	aslcompilerparse.c aslcompilerlex.c aslanalyze.c aslcodegen.c \
-	aslcompile.c aslerror.c aslfiles.c asllength.c \
-	asllisting.c aslload.c asllookup.c aslmain.c aslmap.c aslopcodes.c \
-	asloperands.c aslpredef.c aslresource.c aslrestype1.c aslrestype2.c aslstartup.c \
-	asltree.c aslutils.c asltransform.c aslfold.c aslstubs.c aslopt.c \
+SRCS=	\
+	aslcompilerparse.c \
+	aslcompilerlex.c \
+	aslanalyze.c \
+	aslcodegen.c \
+	aslcompile.c \
+	aslerror.c \
+	aslfiles.c \
+	aslfold.c \
+	asllength.c \
+	asllisting.c \
+	aslload.c \
+	asllookup.c \
+	aslmain.c \
+	aslmap.c \
+	aslopcodes.c \
+	asloperands.c \
+	aslopt.c \
+	aslpredef.c \
+	aslresource.c \
+	aslrestype1.c \
+	aslrestype1i.c \
+	aslrestype2.c \
+	aslrestype2d.c \
+	aslrestype2e.c \
+	aslrestype2q.c \
+	aslrestype2w.c \
+	aslstartup.c \
+	aslstubs.c \
+	asltransform.c \
+	asltree.c \
+	aslutils.c \
 	../common/getopt.c \
 	../utilities/utalloc.c \
 	../utilities/utcache.c \

Modified: vendor-sys/acpica/dist/compiler/aslcompile.c
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslcompile.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslcompile.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -177,7 +177,8 @@ AslCompilerSignon (
         {
             Prefix = "; ";
         }
-        else if (Gbl_HexOutputFlag == HEX_OUTPUT_C)
+        else if ((Gbl_HexOutputFlag == HEX_OUTPUT_C) ||
+                 (Gbl_HexOutputFlag == HEX_OUTPUT_ASL))
         {
             FlPrintFile (ASL_FILE_HEX_OUTPUT, "/*\n");
             Prefix = " * ";
@@ -265,7 +266,8 @@ AslCompilerFileHeader (
         {
             Prefix = "; ";
         }
-        else if (Gbl_HexOutputFlag == HEX_OUTPUT_C)
+        else if ((Gbl_HexOutputFlag == HEX_OUTPUT_C) ||
+                 (Gbl_HexOutputFlag == HEX_OUTPUT_ASL))
         {
             Prefix = " * ";
         }

Modified: vendor-sys/acpica/dist/compiler/aslcompiler.h
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslcompiler.h	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslcompiler.h	Wed Apr 28 21:50:57 2010	(r207340)
@@ -592,6 +592,10 @@ FlFileError (
     UINT32                  FileId,
     UINT8                   ErrorId);
 
+UINT32
+FlGetFileSize (
+    UINT32                  FileId);
+
 ACPI_STATUS
 FlReadFile (
     UINT32                  FileId,
@@ -750,6 +754,34 @@ UtDoConstant (
 /*
  * aslresource - Resource template generation utilities
  */
+void
+RsSmallAddressCheck (
+    UINT8                   Type,
+    UINT32                  Minimum,
+    UINT32                  Maximum,
+    UINT32                  Length,
+    UINT32                  Alignment,
+    ACPI_PARSE_OBJECT       *MinOp,
+    ACPI_PARSE_OBJECT       *MaxOp,
+    ACPI_PARSE_OBJECT       *LengthOp,
+    ACPI_PARSE_OBJECT       *AlignOp);
+
+void
+RsLargeAddressCheck (
+    UINT64                  Minimum,
+    UINT64                  Maximum,
+    UINT64                  Length,
+    UINT64                  Granularity,
+    UINT8                   Flags,
+    ACPI_PARSE_OBJECT       *MinOp,
+    ACPI_PARSE_OBJECT       *MaxOp,
+    ACPI_PARSE_OBJECT       *LengthOp,
+    ACPI_PARSE_OBJECT       *GranOp);
+
+UINT16
+RsGetStringDataLength (
+    ACPI_PARSE_OBJECT       *InitializerOp);
+
 ASL_RESOURCE_NODE *
 RsAllocateResourceNode (
     UINT32                  Size);
@@ -805,7 +837,7 @@ RsDoResourceTemplate (
 
 
 /*
- * aslrestype1 - generate Small descriptors
+ * aslrestype1 - Miscellaneous Small descriptors
  */
 ASL_RESOURCE_NODE *
 RsDoEndTagDescriptor (
@@ -813,68 +845,72 @@ RsDoEndTagDescriptor (
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoDmaDescriptor (
+RsDoEndDependentDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoEndDependentDescriptor (
+RsDoMemory24Descriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoFixedIoDescriptor (
+RsDoMemory32Descriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoIoDescriptor (
+RsDoMemory32FixedDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoIrqDescriptor (
+RsDoStartDependentDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoIrqNoFlagsDescriptor (
+RsDoStartDependentNoPriDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoMemory24Descriptor (
+RsDoVendorSmallDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
+
+/*
+ * aslrestype1i - I/O-related Small descriptors
+ */
 ASL_RESOURCE_NODE *
-RsDoMemory32Descriptor (
+RsDoDmaDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoMemory32FixedDescriptor (
+RsDoFixedIoDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoStartDependentDescriptor (
+RsDoIoDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoStartDependentNoPriDescriptor (
+RsDoIrqDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
-RsDoVendorSmallDescriptor (
+RsDoIrqNoFlagsDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
 
 /*
- * aslrestype2 - generate Large descriptors
+ * aslrestype2 - Large resource descriptors
  */
 ASL_RESOURCE_NODE *
 RsDoInterruptDescriptor (
@@ -882,6 +918,20 @@ RsDoInterruptDescriptor (
     UINT32                  CurrentByteOffset);
 
 ASL_RESOURCE_NODE *
+RsDoVendorLargeDescriptor (
+    ACPI_PARSE_OBJECT       *Op,
+    UINT32                  CurrentByteOffset);
+
+ASL_RESOURCE_NODE *
+RsDoGeneralRegisterDescriptor (
+    ACPI_PARSE_OBJECT       *Op,
+    UINT32                  CurrentByteOffset);
+
+
+/*
+ * aslrestype2d - DWord address descriptors
+ */
+ASL_RESOURCE_NODE *
 RsDoDwordIoDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
@@ -896,6 +946,10 @@ RsDoDwordSpaceDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
+
+/*
+ * aslrestype2e - Extended address descriptors
+ */
 ASL_RESOURCE_NODE *
 RsDoExtendedIoDescriptor (
     ACPI_PARSE_OBJECT       *Op,
@@ -911,6 +965,10 @@ RsDoExtendedSpaceDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
+
+/*
+ * aslrestype2q - QWord address descriptors
+ */
 ASL_RESOURCE_NODE *
 RsDoQwordIoDescriptor (
     ACPI_PARSE_OBJECT       *Op,
@@ -926,6 +984,10 @@ RsDoQwordSpaceDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
+
+/*
+ * aslrestype2w - Word address descriptors
+ */
 ASL_RESOURCE_NODE *
 RsDoWordIoDescriptor (
     ACPI_PARSE_OBJECT       *Op,
@@ -941,15 +1003,5 @@ RsDoWordBusNumberDescriptor (
     ACPI_PARSE_OBJECT       *Op,
     UINT32                  CurrentByteOffset);
 
-ASL_RESOURCE_NODE *
-RsDoVendorLargeDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
-
-ASL_RESOURCE_NODE *
-RsDoGeneralRegisterDescriptor (
-    ACPI_PARSE_OBJECT       *Op,
-    UINT32                  CurrentByteOffset);
-
 #endif /*  __ASLCOMPILER_H */
 

Modified: vendor-sys/acpica/dist/compiler/asldefine.h
==============================================================================
--- vendor-sys/acpica/dist/compiler/asldefine.h	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/asldefine.h	Wed Apr 28 21:50:57 2010	(r207340)
@@ -128,7 +128,7 @@
 #define CompilerId                  "ASL Optimizing Compiler"
 #define DisassemblerId              "AML Disassembler"
 #define CompilerCopyright           "Copyright (c) 2000 - 2010 Intel Corporation"
-#define CompilerCompliance          "Supports ACPI Specification Revision 4.0"
+#define CompilerCompliance          "Supports ACPI Specification Revision 4.0a"
 #define CompilerName                "iasl"
 #define CompilerCreatorId           "INTL"
 

Modified: vendor-sys/acpica/dist/compiler/aslfiles.c
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslfiles.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslfiles.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -236,6 +236,36 @@ FlOpenFile (
 
 /*******************************************************************************
  *
+ * FUNCTION:    FlGetFileSize
+ *
+ * PARAMETERS:  FileId              - Index into file info array
+ *
+ * RETURN:      File Size
+ *
+ * DESCRIPTION: Get current file size. Uses seek-to-EOF. File must be open.
+ *
+ ******************************************************************************/
+
+UINT32
+FlGetFileSize (
+    UINT32                  FileId)
+{
+    FILE                    *fp;
+    UINT32                  FileSize;
+
+
+    fp = Gbl_Files[FileId].Handle;
+
+    fseek (fp, 0, SEEK_END);
+    FileSize = (UINT32) ftell (fp);
+    fseek (fp, 0, SEEK_SET);
+
+    return (FileSize);
+}
+
+
+/*******************************************************************************
+ *
  * FUNCTION:    FlReadFile
  *
  * PARAMETERS:  FileId              - Index into file info array

Modified: vendor-sys/acpica/dist/compiler/aslglobal.h
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslglobal.h	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslglobal.h	Wed Apr 28 21:50:57 2010	(r207340)
@@ -188,6 +188,7 @@ ASL_EXTERN BOOLEAN                  ASL_
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_FoldConstants, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_VerboseErrors, TRUE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NoErrors, FALSE);
+ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_NoResourceChecking, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_GetAllTables, FALSE);
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_IntegerOptimizationFlag, TRUE);
@@ -200,6 +201,8 @@ ASL_EXTERN UINT8                    ASL_
 #define HEX_OUTPUT_NONE         0
 #define HEX_OUTPUT_C            1
 #define HEX_OUTPUT_ASM          2
+#define HEX_OUTPUT_ASL          3
+
 ASL_EXTERN BOOLEAN                  ASL_INIT_GLOBAL (Gbl_HexOutputFlag, HEX_OUTPUT_NONE);
 
 

Modified: vendor-sys/acpica/dist/compiler/asllisting.c
==============================================================================
--- vendor-sys/acpica/dist/compiler/asllisting.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/asllisting.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -198,6 +198,10 @@ static void
 LsDoHexOutputAsm (
     void);
 
+static void
+LsDoHexOutputAsl (
+    void);
+
 ACPI_STATUS
 LsTreeWriteWalk (
     ACPI_PARSE_OBJECT       *Op,
@@ -1337,6 +1341,11 @@ LsDoHexOutput (
         LsDoHexOutputAsm ();
         break;
 
+    case HEX_OUTPUT_ASL:
+
+        LsDoHexOutputAsl ();
+        break;
+
     default:
         /* No other output types supported */
         break;
@@ -1362,60 +1371,160 @@ static void
 LsDoHexOutputC (
     void)
 {
-    UINT32                  j;
-    UINT8                   FileByte[HEX_TABLE_LINE_SIZE];
-    UINT8                   Buffer[4];
+    UINT8                   FileData[HEX_TABLE_LINE_SIZE];
+    UINT32                  LineLength;
     UINT32                  Offset = 0;
+    UINT32                  AmlFileSize;
+    UINT32                  i;
+
+
+    /* Get AML size, seek back to start */
 
+    AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
 
-    FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n *\n */\n");
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n");
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
+        AmlFileSize);
     FlPrintFile (ASL_FILE_HEX_OUTPUT, "unsigned char AmlCode[] =\n{\n");
 
-    /* Start at the beginning of the AML file */
+    while (Offset < AmlFileSize)
+    {
+        /* Read enough bytes needed for one output line */
 
-    FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
+        LineLength = fread (FileData, 1, HEX_TABLE_LINE_SIZE,
+                        Gbl_Files[ASL_FILE_AML_OUTPUT].Handle);
+        if (!LineLength)
+        {
+            break;
+        }
 
-    /* Process all AML bytes in the AML file */
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "    ");
 
-    j = 0;
-    while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte[j], 1) == AE_OK)
-    {
-        if (j == 0)
+        for (i = 0; i < LineLength; i++)
         {
-            FlPrintFile (ASL_FILE_HEX_OUTPUT, "    ");
+            /*
+             * Print each hex byte.
+             * Add a comma until the very last byte of the AML file
+             * (Some C compilers complain about a trailing comma)
+             */
+            FlPrintFile (ASL_FILE_HEX_OUTPUT, "0x%2.2X", FileData[i]);
+            if ((Offset + i + 1) < AmlFileSize)
+            {
+                FlPrintFile (ASL_FILE_HEX_OUTPUT, ",");
+            }
+            else
+            {
+                FlPrintFile (ASL_FILE_HEX_OUTPUT, " ");
+            }
         }
 
-        /* Convert each AML byte to hex */
+        /* Add fill spaces if needed for last line */
 
-        UtConvertByteToHex (FileByte[j], Buffer);
-        FlWriteFile (ASL_FILE_HEX_OUTPUT, Buffer, 4);
-        FlPrintFile (ASL_FILE_HEX_OUTPUT, ",");
+        if (LineLength < HEX_TABLE_LINE_SIZE)
+        {
+            FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s",
+                5 * (HEX_TABLE_LINE_SIZE - LineLength), " ");
+        }
 
-        /* An occasional linefeed improves readability */
+        /* Emit the offset and ascii dump for the entire line */
 
-        Offset++;
-        j++;
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "  /* %8.8X", Offset);
+        LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, LineLength, FileData);
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s*/\n",
+            HEX_TABLE_LINE_SIZE - LineLength + 1, " ");
 
-        if (j >= HEX_TABLE_LINE_SIZE)
-        {
-            /* End of line, emit the ascii dump of the entire line */
+        Offset += LineLength;
+    }
 
-            FlPrintFile (ASL_FILE_HEX_OUTPUT,
-                "  /* %8.8X", Offset - HEX_TABLE_LINE_SIZE);
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n");
+    FlCloseFile (ASL_FILE_HEX_OUTPUT);
+}
 
-            /* Write the ASCII character associated with each of the bytes */
 
-            LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT,
-                HEX_TABLE_LINE_SIZE, FileByte);
-            FlPrintFile (ASL_FILE_HEX_OUTPUT, " */\n");
+/*******************************************************************************
+ *
+ * FUNCTION:    LsDoHexOutputAsl
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None.
+ *
+ * DESCRIPTION: Create the hex output file.  This is the same data as the AML
+ *              output file, but formatted into hex/ascii bytes suitable for
+ *              inclusion into a C source file.
+ *
+ ******************************************************************************/
 
-            /* Start new line */
+static void
+LsDoHexOutputAsl (
+    void)
+{
+    UINT8                   FileData[HEX_TABLE_LINE_SIZE];
+    UINT32                  LineLength;
+    UINT32                  Offset = 0;
+    UINT32                  AmlFileSize;
+    UINT32                  i;
 
-            j = 0;
+
+    /* Get AML size, seek back to start */
+
+    AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
+
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, " * ASL source code output\n");
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
+        AmlFileSize);
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, "    Name (BUF1, Buffer()\n    {\n");
+
+    while (Offset < AmlFileSize)
+    {
+        /* Read enough bytes needed for one output line */
+
+        LineLength = fread (FileData, 1, HEX_TABLE_LINE_SIZE,
+                        Gbl_Files[ASL_FILE_AML_OUTPUT].Handle);
+        if (!LineLength)
+        {
+            break;
+        }
+
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "        ");
+
+        for (i = 0; i < LineLength; i++)
+        {
+            /*
+             * Print each hex byte.
+             * Add a comma until the very last byte of the AML file
+             * (Some C compilers complain about a trailing comma)
+             */
+            FlPrintFile (ASL_FILE_HEX_OUTPUT, "0x%2.2X", FileData[i]);
+            if ((Offset + i + 1) < AmlFileSize)
+            {
+                FlPrintFile (ASL_FILE_HEX_OUTPUT, ",");
+            }
+            else
+            {
+                FlPrintFile (ASL_FILE_HEX_OUTPUT, " ");
+            }
+        }
+
+        /* Add fill spaces if needed for last line */
+
+        if (LineLength < HEX_TABLE_LINE_SIZE)
+        {
+            FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s",
+                5 * (HEX_TABLE_LINE_SIZE - LineLength), " ");
         }
+
+        /* Emit the offset and ascii dump for the entire line */
+
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "  /* %8.8X", Offset);
+        LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, LineLength, FileData);
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s*/\n",
+            HEX_TABLE_LINE_SIZE - LineLength + 1, " ");
+
+        Offset += LineLength;
     }
 
-    FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n};\n");
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, "    })\n");
     FlCloseFile (ASL_FILE_HEX_OUTPUT);
 }
 
@@ -1438,58 +1547,64 @@ static void
 LsDoHexOutputAsm (
     void)
 {
-    UINT32                  j;
-    UINT8                   FileByte[HEX_TABLE_LINE_SIZE];
-    UINT8                   Buffer[4];
+    UINT8                   FileData[HEX_TABLE_LINE_SIZE];
+    UINT32                  LineLength;
     UINT32                  Offset = 0;
-    BOOLEAN                 DoComma = FALSE;
+    UINT32                  AmlFileSize;
+    UINT32                  i;
 
 
-    FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n;\n");
+    /* Get AML size, seek back to start */
 
-    /* Start at the beginning of the AML file */
+    AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
 
-    FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n");
+    FlPrintFile (ASL_FILE_HEX_OUTPUT, "; AML code block contains 0x%X bytes\n;\n",
+        AmlFileSize);
 
-    /* Process all AML bytes in the AML file */
-
-    j = 0;
-    while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte[j], 1) == AE_OK)
+    while (Offset < AmlFileSize)
     {
-        if (j == 0)
+        /* Read enough bytes needed for one output line */
+
+        LineLength = fread (FileData, 1, HEX_TABLE_LINE_SIZE,
+                        Gbl_Files[ASL_FILE_AML_OUTPUT].Handle);
+        if (!LineLength)
         {
-            FlPrintFile (ASL_FILE_HEX_OUTPUT, "  db  ");
+            break;
         }
-        else if (DoComma)
+
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "  db  ");
+
+        for (i = 0; i < LineLength; i++)
         {
-            FlPrintFile (ASL_FILE_HEX_OUTPUT, ",");
-            DoComma = FALSE;
+            /*
+             * Print each hex byte.
+             * Add a comma until the last byte of the line
+             */
+            FlPrintFile (ASL_FILE_HEX_OUTPUT, "0%2.2Xh", FileData[i]);
+            if ((i + 1) < LineLength)
+            {
+                FlPrintFile (ASL_FILE_HEX_OUTPUT, ",");
+            }
         }
 
-        /* Convert each AML byte to hex */
-
-        UtConvertByteToAsmHex (FileByte[j], Buffer);
-        FlWriteFile (ASL_FILE_HEX_OUTPUT, Buffer, 4);
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, " ");
 
-        /* An occasional linefeed improves readability */
+        /* Add fill spaces if needed for last line */
 
-        Offset++;
-        j++;
-        if (j >= HEX_TABLE_LINE_SIZE)
+        if (LineLength < HEX_TABLE_LINE_SIZE)
         {
-            FlPrintFile (ASL_FILE_HEX_OUTPUT,
-                "  ;%8.8X", Offset - HEX_TABLE_LINE_SIZE);
+            FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s",
+                5 * (HEX_TABLE_LINE_SIZE - LineLength), " ");
+        }
 
-            /* Write the ASCII character associated with each of the bytes */
+        /* Emit the offset and ascii dump for the entire line */
 
-            LsDumpAscii (ASL_FILE_HEX_OUTPUT, HEX_TABLE_LINE_SIZE, FileByte);
-            FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n");
-            j = 0;
-        }
-        else
-        {
-            DoComma = TRUE;
-        }
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "  ; %8.8X", Offset);
+        LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, LineLength, FileData);
+        FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n");
+
+        Offset += LineLength;
     }
 
     FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n");

Modified: vendor-sys/acpica/dist/compiler/aslmain.c
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslmain.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslmain.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -167,7 +167,7 @@ AslDoResponseFile (
 
 
 #define ASL_TOKEN_SEPARATORS    " \t\n"
-#define ASL_SUPPORTED_OPTIONS   "@:2b:cd^e:fgh^i^I:l^o:p:r:s:t:v:w:x:"
+#define ASL_SUPPORTED_OPTIONS   "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:v:w:x:"
 
 
 /*******************************************************************************
@@ -203,13 +203,14 @@ Options (
     printf ("\nAML Output Files:\n");
     printf ("  -s<a|c>        Create AML in assembler or C source file (*.asm or *.c)\n");
     printf ("  -i<a|c>        Create assembler or C include file (*.inc or *.h)\n");
-    printf ("  -t<a|c>        Create AML in assembler or C hex table (*.hex)\n");
+    printf ("  -t<a|c|s>      Create AML in assembler, C, or ASL hex table (*.hex)\n");
 
     printf ("\nAML Code Generation:\n");
     printf ("  -oa            Disable all optimizations (compatibility mode)\n");
     printf ("  -of            Disable constant folding\n");
     printf ("  -oi            Disable integer optimization to Zero/One/Ones\n");
     printf ("  -on            Disable named reference string optimization\n");
+    printf ("  -cr            Disable Resource Descriptor error checking\n");
     printf ("  -r<Revision>   Override table header Revision (1-255)\n");
 
     printf ("\nListings:\n");
@@ -264,7 +265,7 @@ HelpMessage (
     printf ("  -b<p|t|b>      Create compiler debug/trace file (*.txt)\n");
     printf ("                   Types: Parse/Tree/Both\n");
     printf ("  -f             Ignore errors, force creation of AML output file(s)\n");
-    printf ("  -c             Parse only, no output generation\n");
+    printf ("  -n             Parse only, no output generation\n");
     printf ("  -ot            Display compile times\n");
     printf ("  -x<level>      Set debug level for trace output\n");
 }
@@ -507,10 +508,16 @@ AslDoOptions (
 
 
     case 'c':
+        switch (AcpiGbl_Optarg[0])
+        {
+        case 'r':
+            Gbl_NoResourceChecking = TRUE;
+            break;
 
-        /* Parse only */
-
-        Gbl_ParseOnlyFlag = TRUE;
+        default:
+            printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
+            return (-1);
+        }
         break;
 
 
@@ -688,6 +695,14 @@ AslDoOptions (
         break;
 
 
+    case 'n':
+
+        /* Parse only */
+
+        Gbl_ParseOnlyFlag = TRUE;
+        break;
+
+
     case 'p':
 
         /* Override default AML output filename */
@@ -741,6 +756,10 @@ AslDoOptions (
             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);

Modified: vendor-sys/acpica/dist/compiler/aslpredef.c
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslpredef.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslpredef.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -243,11 +243,11 @@ ApCheckForPredefinedMethod (
         break;
 
 
-    case ACPI_EVENT_RESERVED_NAME:      /* _Lxx, _Exx, and _Qxx methods */
+    case ACPI_EVENT_RESERVED_NAME:      /* _Lxx/_Exx/_Wxx/_Qxx methods */
 
         Gbl_ReservedMethods++;
 
-        /* NumArguments must be zero for all _Lxx, _Exx, and _Qxx methods */
+        /* NumArguments must be zero for all _Lxx/_Exx/_Wxx/_Qxx methods */
 
         if (MethodInfo->NumArguments != 0)
         {
@@ -346,12 +346,12 @@ ApCheckPredefinedReturnValue (
     case ACPI_NOT_RESERVED_NAME:        /* No underscore or _Txx or _xxx name not matched */
     case ACPI_PREDEFINED_NAME:          /* Resource Name or reserved scope name */
     case ACPI_COMPILER_RESERVED_NAME:   /* A _Txx that was not emitted by compiler */
-    case ACPI_EVENT_RESERVED_NAME:      /* _Lxx, _Exx, and _Qxx methods */
+    case ACPI_EVENT_RESERVED_NAME:      /* _Lxx/_Exx/_Wxx/_Qxx methods */
 
         /* Just return, nothing to do */
         return;
 
-    default: /* a real predefined ACPI name */
+    default: /* A standard predefined ACPI name */
 
         /* Exit if no return value expected */
 
@@ -425,29 +425,59 @@ ApCheckForPredefinedObject (
      * or a predefined scope name
      */
     Index = ApCheckForPredefinedName (Op, Name);
-    if (Index > ACPI_VALID_RESERVED_NAME_MAX)
+
+    switch (Index)
     {
+    case ACPI_NOT_RESERVED_NAME:        /* No underscore or _Txx or _xxx name not matched */
+    case ACPI_PREDEFINED_NAME:          /* Resource Name or reserved scope name */
+    case ACPI_COMPILER_RESERVED_NAME:   /* A _Txx that was not emitted by compiler */
+
+        /* Nothing to do */
         return;
-    }
 
-    /*
-     * We found a matching predefind name.
-     * Check if this predefined name requires input arguments
-     */
-    if (PredefinedNames[Index].Info.ParamCount > 0)
-    {
+    case ACPI_EVENT_RESERVED_NAME:      /* _Lxx/_Exx/_Wxx/_Qxx methods */
+
         /*
-         * This predefined name must always be defined as a control
-         * method because it is required to have input arguments.
+         * These names must be control methods, by definition in ACPI spec.
+         * Also because they are defined to return no value. None of them
+         * require any arguments.
          */
         AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op,
-            "with arguments");
-    }
+            "with zero arguments");
+        return;
 
-    /* Typecheck the actual object, it is the next argument */
+    default: /* A standard predefined ACPI name */
 
-    ApCheckObjectType (Op->Asl.Child->Asl.Next,
-        PredefinedNames[Index].Info.ExpectedBtypes);
+        /*
+         * If this predefined name requires input arguments, then
+         * it must be implemented as a control method
+         */
+        if (PredefinedNames[Index].Info.ParamCount > 0)
+        {
+            AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op,
+                "with arguments");
+            return;
+        }
+
+        /*
+         * If no return value is expected from this predefined name, then
+         * it follows that it must be implemented as a control method
+         * (with zero args, because the args > 0 case was handled above)
+         * Examples are: _DIS, _INI, _IRC, _OFF, _ON, _PSx
+         */
+        if (!PredefinedNames[Index].Info.ExpectedBtypes)
+        {
+            AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op,
+                "with zero arguments");
+            return;
+        }
+
+        /* Typecheck the actual object, it is the next argument */
+
+        ApCheckObjectType (Op->Asl.Child->Asl.Next,
+            PredefinedNames[Index].Info.ExpectedBtypes);
+        return;
+    }
 }
 
 
@@ -514,7 +544,7 @@ ApCheckForPredefinedName (
         }
     }
 
-    /* Check for _Lxx, _Exx, _Qxx, _T_x. Warning if unknown predefined name */
+    /* Check for _Lxx/_Exx/_Wxx/_Qxx/_T_x. Warning if unknown predefined name */
 
     return (ApCheckForSpecialName (Op, Name));
 }
@@ -530,7 +560,7 @@ ApCheckForPredefinedName (
  * RETURN:      None
  *
  * DESCRIPTION: Check for the "special" predefined names -
- *              _Lxx, _Exx, _Qxx, and _T_x
+ *              _Lxx, _Exx, _Qxx, _Wxx, and _T_x
  *
  ******************************************************************************/
 
@@ -541,14 +571,16 @@ ApCheckForSpecialName (
 {
 
     /*
-     * Check for the "special" predefined names. We know the first char is an
-     * underscore already.
+     * Check for the "special" predefined names. We already know that the
+     * first character is an underscore.
      *   GPE:  _Lxx
      *   GPE:  _Exx
+     *   GPE:  _Wxx
      *   EC:   _Qxx
      */
     if ((Name[1] == 'L') ||
         (Name[1] == 'E') ||
+        (Name[1] == 'W') ||
         (Name[1] == 'Q'))
     {
         /* The next two characters must be hex digits */

Modified: vendor-sys/acpica/dist/compiler/aslresource.c
==============================================================================
--- vendor-sys/acpica/dist/compiler/aslresource.c	Wed Apr 28 19:42:20 2010	(r207339)
+++ vendor-sys/acpica/dist/compiler/aslresource.c	Wed Apr 28 21:50:57 2010	(r207340)
@@ -1,7 +1,7 @@
 
 /******************************************************************************
  *
- * Module Name: aslresource - Resource templates and descriptors
+ * Module Name: aslresource - Resource template/descriptor utilities
  *
  *****************************************************************************/
 
@@ -126,6 +126,298 @@
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-vendor mailing list