Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Apr 2010 22:25:28 +0000 (UTC)
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r207344 - in head: sys/conf sys/contrib/dev/acpica sys/contrib/dev/acpica/common sys/contrib/dev/acpica/compiler sys/contrib/dev/acpica/debugger sys/contrib/dev/acpica/events sys/contri...
Message-ID:  <201004282225.o3SMPSeR075875@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jkim
Date: Wed Apr 28 22:25:27 2010
New Revision: 207344
URL: http://svn.freebsd.org/changeset/base/207344

Log:
  Merge ACPICA 20100428.

Added:
  head/sys/contrib/dev/acpica/compiler/aslrestype1i.c
     - copied, changed from r207340, vendor-sys/acpica/dist/compiler/aslrestype1i.c
  head/sys/contrib/dev/acpica/compiler/aslrestype2d.c
     - copied, changed from r207340, vendor-sys/acpica/dist/compiler/aslrestype2d.c
  head/sys/contrib/dev/acpica/compiler/aslrestype2e.c
     - copied, changed from r207340, vendor-sys/acpica/dist/compiler/aslrestype2e.c
  head/sys/contrib/dev/acpica/compiler/aslrestype2q.c
     - copied, changed from r207340, vendor-sys/acpica/dist/compiler/aslrestype2q.c
  head/sys/contrib/dev/acpica/compiler/aslrestype2w.c
     - copied, changed from r207340, vendor-sys/acpica/dist/compiler/aslrestype2w.c
  head/sys/contrib/dev/acpica/events/evgpeinit.c
     - copied, changed from r207340, vendor-sys/acpica/dist/events/evgpeinit.c
  head/sys/contrib/dev/acpica/events/evgpeutil.c
     - copied, changed from r207340, vendor-sys/acpica/dist/events/evgpeutil.c
Modified:
  head/sys/conf/files
  head/sys/contrib/dev/acpica/acpica_prep.sh
  head/sys/contrib/dev/acpica/changes.txt
  head/sys/contrib/dev/acpica/common/adisasm.c
  head/sys/contrib/dev/acpica/compiler/aslcompile.c
  head/sys/contrib/dev/acpica/compiler/aslcompiler.h
  head/sys/contrib/dev/acpica/compiler/asldefine.h
  head/sys/contrib/dev/acpica/compiler/aslfiles.c
  head/sys/contrib/dev/acpica/compiler/aslglobal.h
  head/sys/contrib/dev/acpica/compiler/asllisting.c
  head/sys/contrib/dev/acpica/compiler/aslmain.c
  head/sys/contrib/dev/acpica/compiler/aslpredef.c
  head/sys/contrib/dev/acpica/compiler/aslresource.c
  head/sys/contrib/dev/acpica/compiler/aslrestype1.c
  head/sys/contrib/dev/acpica/compiler/aslrestype2.c
  head/sys/contrib/dev/acpica/compiler/asltypes.h
  head/sys/contrib/dev/acpica/debugger/dbcmds.c
  head/sys/contrib/dev/acpica/debugger/dbdisply.c
  head/sys/contrib/dev/acpica/events/evgpe.c
  head/sys/contrib/dev/acpica/events/evgpeblk.c
  head/sys/contrib/dev/acpica/executer/exconfig.c
  head/sys/contrib/dev/acpica/executer/exoparg1.c
  head/sys/contrib/dev/acpica/executer/exsystem.c
  head/sys/contrib/dev/acpica/include/acevents.h
  head/sys/contrib/dev/acpica/include/acglobal.h
  head/sys/contrib/dev/acpica/include/acinterp.h
  head/sys/contrib/dev/acpica/include/aclocal.h
  head/sys/contrib/dev/acpica/include/acpiosxf.h
  head/sys/contrib/dev/acpica/include/acpixf.h
  head/sys/contrib/dev/acpica/include/actypes.h
  head/sys/contrib/dev/acpica/include/amlresrc.h
  head/sys/contrib/dev/acpica/osunixxf.c
  head/sys/contrib/dev/acpica/tables/tbfind.c
  head/sys/contrib/dev/acpica/tables/tbinstal.c
  head/sys/contrib/dev/acpica/tables/tbutils.c
  head/sys/contrib/dev/acpica/tables/tbxface.c
  head/sys/contrib/dev/acpica/utilities/utcopy.c
  head/sys/contrib/dev/acpica/utilities/utglobal.c
  head/sys/contrib/dev/acpica/utilities/uttrack.c
  head/sys/dev/acpica/Osd/OsdHardware.c
  head/sys/modules/acpi/acpi/Makefile
  head/usr.sbin/acpi/acpidb/Makefile
  head/usr.sbin/acpi/iasl/Makefile
Directory Properties:
  head/sys/   (props changed)
  head/sys/contrib/dev/acpica/   (props changed)

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/conf/files	Wed Apr 28 22:25:27 2010	(r207344)
@@ -174,6 +174,8 @@ contrib/dev/acpica/dispatcher/dswstate.c
 contrib/dev/acpica/events/evevent.c		optional acpi
 contrib/dev/acpica/events/evgpe.c		optional acpi
 contrib/dev/acpica/events/evgpeblk.c		optional acpi
+contrib/dev/acpica/events/evgpeinit.c		optional acpi
+contrib/dev/acpica/events/evgpeutil.c		optional acpi
 contrib/dev/acpica/events/evmisc.c		optional acpi
 contrib/dev/acpica/events/evregion.c		optional acpi
 contrib/dev/acpica/events/evrgnini.c		optional acpi

Modified: head/sys/contrib/dev/acpica/acpica_prep.sh
==============================================================================
--- head/sys/contrib/dev/acpica/acpica_prep.sh	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/acpica_prep.sh	Wed Apr 28 22:25:27 2010	(r207344)
@@ -19,7 +19,7 @@ fulldirs="common compiler debugger disas
 	tools utilities"
 
 # files to remove
-stripdirs="acpisrc acpixtract examples generate os_specific"
+stripdirs="acpisrc acpixtract examples generate os_specific tests"
 stripfiles="Makefile README acintel.h aclinux.h acmsvc.h acnetbsd.h	\
 	acos2.h accygwin.h acefi.h acwin.h acwin64.h aeexec.c		\
 	aehandlers.c aemain.c aetables.c osunixdir.c readme.txt		\

Modified: head/sys/contrib/dev/acpica/changes.txt
==============================================================================
--- head/sys/contrib/dev/acpica/changes.txt	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/changes.txt	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/common/adisasm.c
==============================================================================
--- head/sys/contrib/dev/acpica/common/adisasm.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/common/adisasm.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslcompile.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslcompile.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslcompile.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslcompiler.h
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslcompiler.h	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslcompiler.h	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/asldefine.h
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/asldefine.h	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/asldefine.h	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslfiles.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslfiles.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslfiles.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslglobal.h
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslglobal.h	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslglobal.h	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/asllisting.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/asllisting.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/asllisting.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslmain.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslmain.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslmain.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslpredef.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslpredef.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslpredef.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -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: head/sys/contrib/dev/acpica/compiler/aslresource.c
==============================================================================
--- head/sys/contrib/dev/acpica/compiler/aslresource.c	Wed Apr 28 22:23:29 2010	(r207343)
+++ head/sys/contrib/dev/acpica/compiler/aslresource.c	Wed Apr 28 22:25:27 2010	(r207344)
@@ -1,7 +1,7 @@
 
 /******************************************************************************
  *
- * Module Name: aslresource - Resource templates and descriptors
+ * Module Name: aslresource - Resource template/descriptor utilities
  *
  *****************************************************************************/
 
@@ -126,6 +126,298 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    RsSmallAddressCheck
+ *
+ * PARAMETERS:  Minimum             - Address Min value
+ *              Maximum             - Address Max value
+ *              Length              - Address range value
+ *              Alignment           - Address alignment value
+ *              MinOp               - Original Op for Address Min
+ *              MaxOp               - Original Op for Address Max
+ *              LengthOp            - Original Op for address range
+ *              AlignOp             - Original Op for address alignment. If
+ *                                    NULL, means "zero value for alignment is
+ *                                    OK, and means 64K alignment" (for
+ *                                    Memory24 descriptor)
+ *
+ * RETURN:      None. Adds error messages to error log if necessary
+ *
+ * DESCRIPTION: Perform common value checks for "small" address descriptors.
+ *              Currently:
+ *                  Io, Memory24, Memory32
+ *
+ ******************************************************************************/
+

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004282225.o3SMPSeR075875>