summaryrefslogtreecommitdiffstats
path: root/sys/contrib
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2013-05-20 23:52:49 +0000
committerjkim <jkim@FreeBSD.org>2013-05-20 23:52:49 +0000
commitca7944e4059769f0f5788417db3d8f3b2a8e7996 (patch)
tree3858a454e4df3ea62639923664ce32f0d9706e26 /sys/contrib
parent4cdc15c1f748d4763888b9351c2316a878059a87 (diff)
parentaf69f95bba3597db53a980597cfd371c9f6ee7cf (diff)
downloadFreeBSD-src-ca7944e4059769f0f5788417db3d8f3b2a8e7996.zip
FreeBSD-src-ca7944e4059769f0f5788417db3d8f3b2a8e7996.tar.gz
Merge ACPICA 20130517.
Diffstat (limited to 'sys/contrib')
-rwxr-xr-xsys/contrib/dev/acpica/acpica_prep.sh6
-rw-r--r--sys/contrib/dev/acpica/changes.txt104
-rw-r--r--sys/contrib/dev/acpica/common/adisasm.c3
-rw-r--r--sys/contrib/dev/acpica/common/adwalk.c7
-rw-r--r--sys/contrib/dev/acpica/common/dmextern.c1
-rw-r--r--sys/contrib/dev/acpica/common/dmrestag.c2
-rw-r--r--sys/contrib/dev/acpica/common/dmtable.c33
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump.c83
-rw-r--r--sys/contrib/dev/acpica/common/getopt.c68
-rw-r--r--sys/contrib/dev/acpica/compiler/aslanalyze.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslbtypes.c38
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcodegen.c5
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompile.c7
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompiler.h27
-rw-r--r--sys/contrib/dev/acpica/compiler/aslerror.c135
-rw-r--r--sys/contrib/dev/acpica/compiler/aslfold.c9
-rw-r--r--sys/contrib/dev/acpica/compiler/aslglobal.h3
-rw-r--r--sys/contrib/dev/acpica/compiler/aslhex.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/asllength.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/asllisting.c20
-rw-r--r--sys/contrib/dev/acpica/compiler/asllistsup.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslload.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/asllookup.c2
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmain.c774
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmessages.h86
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmethod.c87
-rw-r--r--sys/contrib/dev/acpica/compiler/aslnamesp.c21
-rw-r--r--sys/contrib/dev/acpica/compiler/asloffset.c122
-rw-r--r--sys/contrib/dev/acpica/compiler/aslopcodes.c3
-rw-r--r--sys/contrib/dev/acpica/compiler/asloperands.c23
-rw-r--r--sys/contrib/dev/acpica/compiler/asloptions.c791
-rw-r--r--sys/contrib/dev/acpica/compiler/aslpredef.c22
-rw-r--r--sys/contrib/dev/acpica/compiler/aslresource.c45
-rw-r--r--sys/contrib/dev/acpica/compiler/aslrestype1i.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/aslrestype2s.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslstartup.c1
-rw-r--r--sys/contrib/dev/acpica/compiler/aslsupport.l15
-rw-r--r--sys/contrib/dev/acpica/compiler/asltransform.c9
-rw-r--r--sys/contrib/dev/acpica/compiler/asltree.c50
-rw-r--r--sys/contrib/dev/acpica/compiler/asltypes.h11
-rw-r--r--sys/contrib/dev/acpica/compiler/aslutils.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/aslwalks.c10
-rw-r--r--sys/contrib/dev/acpica/compiler/aslxref.c12
-rw-r--r--sys/contrib/dev/acpica/compiler/dtexpress.c19
-rw-r--r--sys/contrib/dev/acpica/compiler/dtfield.c9
-rw-r--r--sys/contrib/dev/acpica/compiler/dtio.c32
-rw-r--r--sys/contrib/dev/acpica/compiler/dtsubtable.c3
-rw-r--r--sys/contrib/dev/acpica/compiler/dttable.c81
-rw-r--r--sys/contrib/dev/acpica/compiler/dtutils.c43
-rw-r--r--sys/contrib/dev/acpica/compiler/prscan.c46
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbcmds.c5
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbconvert.c4
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbdisply.c14
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbexec.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbhistry.c38
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbinput.c59
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbmethod.c6
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbnames.c2
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbstats.c4
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbutils.c8
-rw-r--r--sys/contrib/dev/acpica/components/debugger/dbxface.c18
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmbuffer.c1
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmdeferred.c2
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmnames.c4
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmobject.c16
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmopcode.c27
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmresrc.c1
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmresrcl.c12
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c4
-rw-r--r--sys/contrib/dev/acpica/components/disassembler/dmwalk.c8
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dscontrol.c12
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsfield.c4
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsinit.c4
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c2
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsobject.c12
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsopcode.c1
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dsutils.c8
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dswexec.c14
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dswload.c8
-rw-r--r--sys/contrib/dev/acpica/components/dispatcher/dswload2.c11
-rw-r--r--sys/contrib/dev/acpica/components/events/evglock.c1
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpe.c4
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpeblk.c2
-rw-r--r--sys/contrib/dev/acpica/components/events/evgpeinit.c3
-rw-r--r--sys/contrib/dev/acpica/components/events/evhandler.c7
-rw-r--r--sys/contrib/dev/acpica/components/events/evmisc.c3
-rw-r--r--sys/contrib/dev/acpica/components/events/evrgnini.c2
-rw-r--r--sys/contrib/dev/acpica/components/events/evxfgpe.c6
-rw-r--r--sys/contrib/dev/acpica/components/events/evxfregn.c1
-rw-r--r--sys/contrib/dev/acpica/components/executer/exconfig.c3
-rw-r--r--sys/contrib/dev/acpica/components/executer/exconvrt.c25
-rw-r--r--sys/contrib/dev/acpica/components/executer/excreate.c3
-rw-r--r--sys/contrib/dev/acpica/components/executer/exdebug.c2
-rw-r--r--sys/contrib/dev/acpica/components/executer/exdump.c30
-rw-r--r--sys/contrib/dev/acpica/components/executer/exfield.c4
-rw-r--r--sys/contrib/dev/acpica/components/executer/exfldio.c7
-rw-r--r--sys/contrib/dev/acpica/components/executer/exmisc.c23
-rw-r--r--sys/contrib/dev/acpica/components/executer/exnames.c5
-rw-r--r--sys/contrib/dev/acpica/components/executer/exoparg1.c43
-rw-r--r--sys/contrib/dev/acpica/components/executer/exoparg2.c9
-rw-r--r--sys/contrib/dev/acpica/components/executer/exoparg3.c3
-rw-r--r--sys/contrib/dev/acpica/components/executer/exoparg6.c7
-rw-r--r--sys/contrib/dev/acpica/components/executer/exprep.c9
-rw-r--r--sys/contrib/dev/acpica/components/executer/exregion.c19
-rw-r--r--sys/contrib/dev/acpica/components/executer/exresnte.c7
-rw-r--r--sys/contrib/dev/acpica/components/executer/exresolv.c18
-rw-r--r--sys/contrib/dev/acpica/components/executer/exresop.c21
-rw-r--r--sys/contrib/dev/acpica/components/executer/exstore.c12
-rw-r--r--sys/contrib/dev/acpica/components/executer/exstoren.c6
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwacpi.c2
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwgpe.c3
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwregs.c16
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwxface.c3
-rw-r--r--sys/contrib/dev/acpica/components/hardware/hwxfsleep.c13
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsaccess.c4
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsconvert.c3
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsdump.c25
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsinit.c9
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nspredef.c14
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsprepkg.c16
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsrepair.c1
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsrepair2.c304
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsutils.c3
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsxfeval.c1
-rw-r--r--sys/contrib/dev/acpica/components/parser/psargs.c17
-rw-r--r--sys/contrib/dev/acpica/components/parser/psloop.c2
-rw-r--r--sys/contrib/dev/acpica/components/parser/psobject.c6
-rw-r--r--sys/contrib/dev/acpica/components/parser/psparse.c9
-rw-r--r--sys/contrib/dev/acpica/components/parser/pstree.c6
-rw-r--r--sys/contrib/dev/acpica/components/resources/rscalc.c7
-rw-r--r--sys/contrib/dev/acpica/components/resources/rscreate.c30
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsdump.c10
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsmisc.c57
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsutils.c5
-rw-r--r--sys/contrib/dev/acpica/components/resources/rsxface.c1
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbinstal.c5
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbprint.c265
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbutils.c226
-rw-r--r--sys/contrib/dev/acpica/components/tables/tbxfload.c15
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utbuffer.c220
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utcopy.c23
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utdebug.c167
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utdelete.c13
-rw-r--r--sys/contrib/dev/acpica/components/utilities/uterror.c327
-rw-r--r--sys/contrib/dev/acpica/components/utilities/uteval.c5
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utexcep.c1
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utids.c3
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utmisc.c2
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utobject.c11
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utstring.c18
-rw-r--r--sys/contrib/dev/acpica/components/utilities/uttrack.c8
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utxferror.c317
-rw-r--r--sys/contrib/dev/acpica/include/acapps.h8
-rw-r--r--sys/contrib/dev/acpica/include/acglobal.h6
-rw-r--r--sys/contrib/dev/acpica/include/acpiosxf.h22
-rw-r--r--sys/contrib/dev/acpica/include/acpixf.h3
-rw-r--r--sys/contrib/dev/acpica/include/actypes.h8
-rw-r--r--sys/contrib/dev/acpica/include/acutils.h45
-rw-r--r--sys/contrib/dev/acpica/include/platform/acenv.h8
-rw-r--r--sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c17
160 files changed, 3607 insertions, 2194 deletions
diff --git a/sys/contrib/dev/acpica/acpica_prep.sh b/sys/contrib/dev/acpica/acpica_prep.sh
index d429a65..44f5e5e 100755
--- a/sys/contrib/dev/acpica/acpica_prep.sh
+++ b/sys/contrib/dev/acpica/acpica_prep.sh
@@ -19,9 +19,9 @@ fulldirs="common compiler components include os_specific"
# files to remove
stripdirs="generate libraries tests tools"
stripfiles="Makefile README accygwin.h acefi.h achaiku.h acintel.h \
- aclinux.h acmsvc.h acnetbsd.h acos2.h acwin.h acwin64.h \
- new_table.txt osunixdir.c oswindir.c oswintbl.c oswinxf.c \
- readme.txt utclib.c"
+ aclinux.h acmacosx.h acmsvc.h acnetbsd.h acos2.h acwin.h \
+ acwin64.h new_table.txt oslinuxtbl.c osunixdir.c oswindir.c \
+ oswintbl.c oswinxf.c readme.txt utclib.c"
# include files to canonify
src_headers="acapps.h acbuffer.h accommon.h acconfig.h acdebug.h \
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
index 04bd6e9..a16fc69 100644
--- a/sys/contrib/dev/acpica/changes.txt
+++ b/sys/contrib/dev/acpica/changes.txt
@@ -1,8 +1,108 @@
----------------------------------------
-18 April 2013. Summary of changes for version 20130418:
+17 May 2013. Summary of changes for version 20130517:
+
+1) ACPICA kernel-resident subsystem:
-This release is available at https://acpica.org/downloads
+Fixed a regression introduced in version 20130328 for _INI methods. This
+change fixes a problem introduced in 20130328 where _INI methods are no
+longer executed properly because of a memory block that was not
+initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
+<tomasz.nowicki@linaro.org>.
+
+Fixed a possible problem with the new extended sleep registers in the ACPI
+5.0 FADT. Do not use these registers (even if populated) unless the HW-
+reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
+1020. Lv Zheng.
+
+Implemented return value repair code for _CST predefined objects: Sort the
+list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
+
+Implemented a debug-only option to disable loading of SSDTs from the
+RSDT/XSDT during ACPICA initialization. This can be useful for debugging
+ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
+acglobal.h - ACPICA BZ 1005. Lv Zheng.
+
+Fixed some issues in the ACPICA initialization and termination code:
+Tomasz Nowicki <tomasz.nowicki@linaro.org>
+1) Clear events initialized flag upon event component termination. ACPICA
+BZ 1013.
+2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
+3) Delete global lock pending lock during termination. ACPICA BZ 1012.
+4) Clear debug buffer global on termination to prevent possible multiple
+delete. ACPICA BZ 1010.
+
+Standardized all switch() blocks across the entire source base. After many
+years, different formatting for switch() had crept in. This change makes
+the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
+
+Split some files to enhance ACPICA modularity and configurability:
+1) Split buffer dump routines into utilities/utbuffer.c
+2) Split internal error message routines into utilities/uterror.c
+3) Split table print utilities into tables/tbprint.c
+4) Split iASL command-line option processing into asloptions.c
+
+Makefile enhancements:
+1) Support for all new files above.
+2) Abort make on errors from any subcomponent. Chao Guan.
+3) Add build support for Apple Mac OS X. Liang Qi.
+
+Example Code and Data Size: These are the sizes for the OS-independent
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
+debug version of the code includes the debug output trace mechanism and
+has a much larger code and data size.
+ Current Release:
+ Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
+ Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
+ Previous Release:
+ Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
+ Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+New utility: Implemented an easily portable version of the acpidump
+utility to extract ACPI tables from the system (or a file) in an ASCII hex
+dump format. The top-level code implements the various command line
+options, file I/O, and table dump routines. To port to a new host, only
+three functions need to be implemented to get tables -- since this
+functionality is OS-dependent. See the tools/acpidump/apmain.c module and
+the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
+1) The Windows version obtains the ACPI tables from the Registry.
+2) The Linux version is under development.
+3) Other hosts - If an OS-dependent module is submitted, it will be
+distributed with ACPICA.
+
+iASL: Fixed a regression for -D preprocessor option (define symbol). A
+restructuring/change to the initialization sequence caused this option to
+no longer work properly.
+
+iASL: Implemented a mechanism to disable specific warnings and remarks.
+Adds a new command line option, "-vw <messageid> as well as "#pragma
+disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
+
+iASL: Fix for too-strict package object validation. The package object
+validation for return values from the predefined names is a bit too
+strict, it does not allow names references within the package (which will
+be resolved at runtime.) These types of references cannot be validated at
+compile time. This change ignores named references within package objects
+for names that return or define static packages.
+
+Debugger: Fixed the 80-character command line limitation for the History
+command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
+
+iASL: Added control method and package support for the -so option
+(generates AML offset table for BIOS support.)
+
+iASL: issue a remark if a non-serialized method creates named objects. If
+a thread blocks within the method for any reason, and another thread
+enters the method, the method will fail because an attempt will be made to
+create the same (named) object twice. In this case, issue a remark that
+the method should be marked serialized. NOTE: may become a warning later.
+ACPICA BZ 909.
+
+----------------------------------------
+18 April 2013. Summary of changes for version 20130418:
1) ACPICA kernel-resident subsystem:
diff --git a/sys/contrib/dev/acpica/common/adisasm.c b/sys/contrib/dev/acpica/common/adisasm.c
index dbef766..6065bd1 100644
--- a/sys/contrib/dev/acpica/common/adisasm.c
+++ b/sys/contrib/dev/acpica/common/adisasm.c
@@ -628,10 +628,12 @@ AdCreateTableHeader (
switch (Table->Revision)
{
case 0:
+
AcpiOsPrintf (" **** Invalid Revision");
break;
case 1:
+
/* Revision of DSDT controls the ACPI integer width */
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT))
@@ -641,6 +643,7 @@ AdCreateTableHeader (
break;
default:
+
break;
}
AcpiOsPrintf ("\n");
diff --git a/sys/contrib/dev/acpica/common/adwalk.c b/sys/contrib/dev/acpica/common/adwalk.c
index da790ed..fb136b9 100644
--- a/sys/contrib/dev/acpica/common/adwalk.c
+++ b/sys/contrib/dev/acpica/common/adwalk.c
@@ -375,14 +375,17 @@ AcpiDmDumpDescending (
case AML_BYTE_OP:
case AML_WORD_OP:
case AML_DWORD_OP:
+
AcpiOsPrintf ("%X", (UINT32) Op->Common.Value.Integer);
break;
case AML_QWORD_OP:
+
AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
break;
case AML_INT_NAMEPATH_OP:
+
if (Op->Common.Value.String)
{
AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String,
@@ -400,10 +403,12 @@ AcpiDmDumpDescending (
case AML_METHOD_OP:
case AML_DEVICE_OP:
case AML_INT_NAMEDFIELD_OP:
+
AcpiOsPrintf ("%4.4s", ACPI_CAST_PTR (char, &Op->Named.Name));
break;
default:
+
break;
}
@@ -450,6 +455,7 @@ AcpiDmFindOrphanDescending (
{
#ifdef ACPI_UNDER_DEVELOPMENT
case AML_ADD_OP:
+
ChildOp = Op->Common.Value.Arg;
if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) &&
!ChildOp->Common.Node)
@@ -556,6 +562,7 @@ AcpiDmFindOrphanDescending (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/common/dmextern.c b/sys/contrib/dev/acpica/common/dmextern.c
index e60924c..0e41dd3 100644
--- a/sys/contrib/dev/acpica/common/dmextern.c
+++ b/sys/contrib/dev/acpica/common/dmextern.c
@@ -594,6 +594,7 @@ AcpiDmAddExternalsToNamespace (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/common/dmrestag.c b/sys/contrib/dev/acpica/common/dmrestag.c
index 54f4282..e6fa462 100644
--- a/sys/contrib/dev/acpica/common/dmrestag.c
+++ b/sys/contrib/dev/acpica/common/dmrestag.c
@@ -798,7 +798,6 @@ AcpiDmGetResourceTag (
case ACPI_RESOURCE_NAME_ADDRESS32:
case ACPI_RESOURCE_NAME_ADDRESS64:
case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64:
-
/*
* Subtype differentiation is the flags.
* Kindof brute force, but just blindly search for an index match
@@ -846,6 +845,7 @@ AcpiDmGetResourceTag (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/common/dmtable.c b/sys/contrib/dev/acpica/common/dmtable.c
index 297a3d5..1fb9e3c 100644
--- a/sys/contrib/dev/acpica/common/dmtable.c
+++ b/sys/contrib/dev/acpica/common/dmtable.c
@@ -697,48 +697,71 @@ AcpiDmDumpTable (
case ACPI_DMT_EINJINST:
case ACPI_DMT_ERSTACT:
case ACPI_DMT_ERSTINST:
+
ByteLength = 1;
break;
+
case ACPI_DMT_UINT16:
case ACPI_DMT_DMAR:
case ACPI_DMT_HEST:
+
ByteLength = 2;
break;
+
case ACPI_DMT_UINT24:
+
ByteLength = 3;
break;
+
case ACPI_DMT_UINT32:
case ACPI_DMT_NAME4:
case ACPI_DMT_SIG:
case ACPI_DMT_SLIC:
+
ByteLength = 4;
break;
+
case ACPI_DMT_UINT40:
+
ByteLength = 5;
break;
+
case ACPI_DMT_UINT48:
case ACPI_DMT_NAME6:
+
ByteLength = 6;
break;
+
case ACPI_DMT_UINT56:
case ACPI_DMT_BUF7:
+
ByteLength = 7;
break;
+
case ACPI_DMT_UINT64:
case ACPI_DMT_NAME8:
+
ByteLength = 8;
break;
+
case ACPI_DMT_BUF16:
case ACPI_DMT_UUID:
+
ByteLength = 16;
break;
+
case ACPI_DMT_BUF128:
+
ByteLength = 128;
break;
+
case ACPI_DMT_STRING:
+
ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1;
break;
+
case ACPI_DMT_GAS:
+
if (!LastOutputBlankLine)
{
AcpiOsPrintf ("\n");
@@ -746,7 +769,9 @@ AcpiDmDumpTable (
}
ByteLength = sizeof (ACPI_GENERIC_ADDRESS);
break;
+
case ACPI_DMT_HESTNTFY:
+
if (!LastOutputBlankLine)
{
AcpiOsPrintf ("\n");
@@ -754,7 +779,9 @@ AcpiDmDumpTable (
}
ByteLength = sizeof (ACPI_HEST_NOTIFY);
break;
+
default:
+
ByteLength = 0;
break;
}
@@ -837,7 +864,6 @@ AcpiDmDumpTable (
case ACPI_DMT_BUF7:
case ACPI_DMT_BUF16:
case ACPI_DMT_BUF128:
-
/*
* Buffer: Size depends on the opcode and was set above.
* Each hex byte is separated with a space.
@@ -1146,16 +1172,19 @@ AcpiDmDumpTable (
switch (Temp8)
{
case ACPI_IVRS_TYPE_HARDWARE:
+
Name = AcpiDmIvrsSubnames[0];
break;
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
+
Name = AcpiDmIvrsSubnames[1];
break;
default:
+
Name = AcpiDmIvrsSubnames[2];
break;
}
@@ -1164,9 +1193,11 @@ AcpiDmDumpTable (
break;
case ACPI_DMT_EXIT:
+
return (AE_OK);
default:
+
ACPI_ERROR ((AE_INFO,
"**** Invalid table opcode [0x%X] ****\n", Info->Opcode));
return (AE_SUPPORT);
diff --git a/sys/contrib/dev/acpica/common/dmtbdump.c b/sys/contrib/dev/acpica/common/dmtbdump.c
index 7518810..6f75fa1 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump.c
@@ -349,27 +349,33 @@ AcpiDmValidateFadtLength (
switch (Revision)
{
case 0:
+
AcpiOsPrintf ("// ACPI Warning: Invalid FADT revision: 0\n");
return;
case 1:
+
ExpectedLength = ACPI_FADT_V1_SIZE;
break;
case 2:
+
ExpectedLength = ACPI_FADT_V2_SIZE;
break;
case 3:
case 4:
+
ExpectedLength = ACPI_FADT_V3_SIZE;
break;
case 5:
+
ExpectedLength = ACPI_FADT_V5_SIZE;
break;
default:
+
return;
}
@@ -434,10 +440,12 @@ AcpiDmDumpAsf (
switch (Type)
{
case ACPI_ASF_TYPE_INFO:
+
InfoTable = AcpiDmTableInfoAsf0;
break;
case ACPI_ASF_TYPE_ALERT:
+
InfoTable = AcpiDmTableInfoAsf1;
DataInfoTable = AcpiDmTableInfoAsf1a;
DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ALERT));
@@ -447,6 +455,7 @@ AcpiDmDumpAsf (
break;
case ACPI_ASF_TYPE_CONTROL:
+
InfoTable = AcpiDmTableInfoAsf2;
DataInfoTable = AcpiDmTableInfoAsf2a;
DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_REMOTE));
@@ -456,10 +465,12 @@ AcpiDmDumpAsf (
break;
case ACPI_ASF_TYPE_BOOT:
+
InfoTable = AcpiDmTableInfoAsf3;
break;
case ACPI_ASF_TYPE_ADDRESS:
+
InfoTable = AcpiDmTableInfoAsf4;
DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ADDRESS));
DataLength = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, SubTable)->Devices;
@@ -467,6 +478,7 @@ AcpiDmDumpAsf (
break;
default:
+
AcpiOsPrintf ("\n**** Unknown ASF sub-table type 0x%X\n", SubTable->Header.Type);
return;
}
@@ -523,6 +535,7 @@ AcpiDmDumpAsf (
break;
default:
+
break;
}
@@ -863,22 +876,31 @@ AcpiDmDumpDmar (
switch (SubTable->Type)
{
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
+
InfoTable = AcpiDmTableInfoDmar0;
ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT);
break;
+
case ACPI_DMAR_TYPE_RESERVED_MEMORY:
+
InfoTable = AcpiDmTableInfoDmar1;
ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY);
break;
+
case ACPI_DMAR_TYPE_ATSR:
+
InfoTable = AcpiDmTableInfoDmar2;
ScopeOffset = sizeof (ACPI_DMAR_ATSR);
break;
+
case ACPI_DMAR_HARDWARE_AFFINITY:
+
InfoTable = AcpiDmTableInfoDmar3;
ScopeOffset = sizeof (ACPI_DMAR_RHSA);
break;
+
default:
+
AcpiOsPrintf ("\n**** Unknown DMAR sub-table type 0x%X\n\n", SubTable->Type);
return;
}
@@ -1086,12 +1108,17 @@ AcpiDmDumpFpdt (
switch (SubTable->Type)
{
case ACPI_FPDT_TYPE_BOOT:
+
InfoTable = AcpiDmTableInfoFpdt0;
break;
+
case ACPI_FPDT_TYPE_S3PERF:
+
InfoTable = AcpiDmTableInfoFpdt1;
break;
+
default:
+
AcpiOsPrintf ("\n**** Unknown FPDT sub-table type 0x%X\n\n", SubTable->Type);
/* Attempt to continue */
@@ -1164,6 +1191,7 @@ AcpiDmDumpHest (
switch (SubTable->Type)
{
case ACPI_HEST_TYPE_IA32_CHECK:
+
InfoTable = AcpiDmTableInfoHest0;
SubTableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK);
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK,
@@ -1171,6 +1199,7 @@ AcpiDmDumpHest (
break;
case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
+
InfoTable = AcpiDmTableInfoHest1;
SubTableLength = sizeof (ACPI_HEST_IA_CORRECTED);
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED,
@@ -1178,31 +1207,37 @@ AcpiDmDumpHest (
break;
case ACPI_HEST_TYPE_IA32_NMI:
+
InfoTable = AcpiDmTableInfoHest2;
SubTableLength = sizeof (ACPI_HEST_IA_NMI);
break;
case ACPI_HEST_TYPE_AER_ROOT_PORT:
+
InfoTable = AcpiDmTableInfoHest6;
SubTableLength = sizeof (ACPI_HEST_AER_ROOT);
break;
case ACPI_HEST_TYPE_AER_ENDPOINT:
+
InfoTable = AcpiDmTableInfoHest7;
SubTableLength = sizeof (ACPI_HEST_AER);
break;
case ACPI_HEST_TYPE_AER_BRIDGE:
+
InfoTable = AcpiDmTableInfoHest8;
SubTableLength = sizeof (ACPI_HEST_AER_BRIDGE);
break;
case ACPI_HEST_TYPE_GENERIC_ERROR:
+
InfoTable = AcpiDmTableInfoHest9;
SubTableLength = sizeof (ACPI_HEST_GENERIC);
break;
default:
+
/* Cannot continue on unknown type - no length */
AcpiOsPrintf ("\n**** Unknown HEST sub-table type 0x%X\n", SubTable->Type);
@@ -1304,14 +1339,19 @@ AcpiDmDumpIvrs (
switch (SubTable->Type)
{
case ACPI_IVRS_TYPE_HARDWARE:
+
InfoTable = AcpiDmTableInfoIvrs0;
break;
+
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
+
InfoTable = AcpiDmTableInfoIvrs1;
break;
+
default:
+
AcpiOsPrintf ("\n**** Unknown IVRS sub-table type 0x%X\n",
SubTable->Type);
@@ -1473,45 +1513,72 @@ AcpiDmDumpMadt (
switch (SubTable->Type)
{
case ACPI_MADT_TYPE_LOCAL_APIC:
+
InfoTable = AcpiDmTableInfoMadt0;
break;
+
case ACPI_MADT_TYPE_IO_APIC:
+
InfoTable = AcpiDmTableInfoMadt1;
break;
+
case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE:
+
InfoTable = AcpiDmTableInfoMadt2;
break;
+
case ACPI_MADT_TYPE_NMI_SOURCE:
+
InfoTable = AcpiDmTableInfoMadt3;
break;
+
case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
+
InfoTable = AcpiDmTableInfoMadt4;
break;
+
case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:
+
InfoTable = AcpiDmTableInfoMadt5;
break;
+
case ACPI_MADT_TYPE_IO_SAPIC:
+
InfoTable = AcpiDmTableInfoMadt6;
break;
+
case ACPI_MADT_TYPE_LOCAL_SAPIC:
+
InfoTable = AcpiDmTableInfoMadt7;
break;
+
case ACPI_MADT_TYPE_INTERRUPT_SOURCE:
+
InfoTable = AcpiDmTableInfoMadt8;
break;
+
case ACPI_MADT_TYPE_LOCAL_X2APIC:
+
InfoTable = AcpiDmTableInfoMadt9;
break;
+
case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
+
InfoTable = AcpiDmTableInfoMadt10;
break;
+
case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
+
InfoTable = AcpiDmTableInfoMadt11;
break;
+
case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
+
InfoTable = AcpiDmTableInfoMadt12;
break;
+
default:
+
AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type);
/* Attempt to continue */
@@ -2152,12 +2219,17 @@ AcpiDmDumpS3pt (
switch (SubTable->Type)
{
case ACPI_S3PT_TYPE_RESUME:
+
InfoTable = AcpiDmTableInfoS3pt0;
break;
+
case ACPI_S3PT_TYPE_SUSPEND:
+
InfoTable = AcpiDmTableInfoS3pt1;
break;
+
default:
+
AcpiOsPrintf ("\n**** Unknown S3PT sub-table type 0x%X\n", SubTable->Type);
/* Attempt to continue */
@@ -2229,12 +2301,17 @@ AcpiDmDumpSlic (
switch (SubTable->Type)
{
case ACPI_SLIC_TYPE_PUBLIC_KEY:
+
InfoTable = AcpiDmTableInfoSlic0;
break;
+
case ACPI_SLIC_TYPE_WINDOWS_MARKER:
+
InfoTable = AcpiDmTableInfoSlic1;
break;
+
default:
+
AcpiOsPrintf ("\n**** Unknown SLIC sub-table type 0x%X\n", SubTable->Type);
/* Attempt to continue */
@@ -2390,14 +2467,20 @@ AcpiDmDumpSrat (
switch (SubTable->Type)
{
case ACPI_SRAT_TYPE_CPU_AFFINITY:
+
InfoTable = AcpiDmTableInfoSrat0;
break;
+
case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
+
InfoTable = AcpiDmTableInfoSrat1;
break;
+
case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
+
InfoTable = AcpiDmTableInfoSrat2;
break;
+
default:
AcpiOsPrintf ("\n**** Unknown SRAT sub-table type 0x%X\n", SubTable->Type);
diff --git a/sys/contrib/dev/acpica/common/getopt.c b/sys/contrib/dev/acpica/common/getopt.c
index 6bedff6..a4ad288 100644
--- a/sys/contrib/dev/acpica/common/getopt.c
+++ b/sys/contrib/dev/acpica/common/getopt.c
@@ -41,6 +41,15 @@
* POSSIBILITY OF SUCH DAMAGES.
*/
+/*
+ * ACPICA getopt() implementation
+ *
+ * Option strings:
+ * "f" - Option has no arguments
+ * "f:" - Option requires an argument
+ * "f^" - Option has optional single-char sub-options
+ * "f|" - Option has required single-char sub-options
+ */
#include <stdio.h>
#include <string.h>
@@ -52,9 +61,59 @@
if (AcpiGbl_Opterr) {fprintf (stderr, "%s%c\n", msg, badchar);}
-int AcpiGbl_Opterr = 1;
-int AcpiGbl_Optind = 1;
-char *AcpiGbl_Optarg;
+int AcpiGbl_Opterr = 1;
+int AcpiGbl_Optind = 1;
+int AcpiGbl_SubOptChar = 0;
+char *AcpiGbl_Optarg;
+
+static int CurrentCharPtr = 1;
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiGetoptArgument
+ *
+ * PARAMETERS: argc, argv - from main
+ *
+ * RETURN: 0 if an argument was found, -1 otherwise. Sets AcpiGbl_Optarg
+ * to point to the next argument.
+ *
+ * DESCRIPTION: Get the next argument. Used to obtain arguments for the
+ * two-character options after the original call to AcpiGetopt.
+ * Note: Either the argument starts at the next character after
+ * the option, or it is pointed to by the next argv entry.
+ * (After call to AcpiGetopt, we need to backup to the previous
+ * argv entry).
+ *
+ ******************************************************************************/
+
+int
+AcpiGetoptArgument (
+ int argc,
+ char **argv)
+{
+ AcpiGbl_Optind--;
+ CurrentCharPtr++;
+
+ if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0')
+ {
+ AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)];
+ }
+ else if (++AcpiGbl_Optind >= argc)
+ {
+ ACPI_OPTION_ERROR ("Option requires an argument: -", 'v');
+
+ CurrentCharPtr = 1;
+ return (-1);
+ }
+ else
+ {
+ AcpiGbl_Optarg = argv[AcpiGbl_Optind++];
+ }
+
+ CurrentCharPtr = 1;
+ return (0);
+}
/*******************************************************************************
@@ -76,7 +135,6 @@ AcpiGetopt(
char **argv,
char *opts)
{
- static int CurrentCharPtr = 1;
int CurrentChar;
char *OptsPtr;
@@ -152,6 +210,7 @@ AcpiGetopt(
AcpiGbl_Optarg = "^";
}
+ AcpiGbl_SubOptChar = AcpiGbl_Optarg[0];
AcpiGbl_Optind++;
CurrentCharPtr = 1;
}
@@ -172,6 +231,7 @@ AcpiGetopt(
return ('?');
}
+ AcpiGbl_SubOptChar = AcpiGbl_Optarg[0];
AcpiGbl_Optind++;
CurrentCharPtr = 1;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslanalyze.c b/sys/contrib/dev/acpica/compiler/aslanalyze.c
index a42526c..f5338bc 100644
--- a/sys/contrib/dev/acpica/compiler/aslanalyze.c
+++ b/sys/contrib/dev/acpica/compiler/aslanalyze.c
@@ -381,6 +381,7 @@ AnIsResultUsed (
return (TRUE);
default:
+
break;
}
@@ -411,6 +412,7 @@ AnIsResultUsed (
return (FALSE);
default:
+
/* Any other type of parent means that the result is used */
return (TRUE);
diff --git a/sys/contrib/dev/acpica/compiler/aslbtypes.c b/sys/contrib/dev/acpica/compiler/aslbtypes.c
index aac3870..16f3a0b 100644
--- a/sys/contrib/dev/acpica/compiler/aslbtypes.c
+++ b/sys/contrib/dev/acpica/compiler/aslbtypes.c
@@ -83,15 +83,19 @@ AnMapArgTypeToBtype (
/* Simple types */
case ARGI_ANYTYPE:
+
return (ACPI_BTYPE_OBJECTS_AND_REFS);
case ARGI_PACKAGE:
+
return (ACPI_BTYPE_PACKAGE);
case ARGI_EVENT:
+
return (ACPI_BTYPE_EVENT);
case ARGI_MUTEX:
+
return (ACPI_BTYPE_MUTEX);
case ARGI_DDBHANDLE:
@@ -111,31 +115,36 @@ AnMapArgTypeToBtype (
case ARGI_BUFFER:
case ARGI_BUFFER_OR_STRING:
case ARGI_COMPUTEDATA:
+
return (ACPI_BTYPE_COMPUTE_DATA);
/* References */
case ARGI_INTEGER_REF:
+
return (ACPI_BTYPE_INTEGER);
case ARGI_OBJECT_REF:
+
return (ACPI_BTYPE_ALL_OBJECTS);
case ARGI_DEVICE_REF:
+
return (ACPI_BTYPE_DEVICE_OBJECTS);
case ARGI_REFERENCE:
+
return (ACPI_BTYPE_REFERENCE);
case ARGI_TARGETREF:
case ARGI_FIXED_TARGET:
case ARGI_SIMPLE_TARGET:
+
return (ACPI_BTYPE_OBJECTS_AND_REFS);
/* Complex types */
case ARGI_DATAOBJECT:
-
/*
* Buffer, string, package or reference to a Op -
* Used only by SizeOf operator
@@ -150,6 +159,7 @@ AnMapArgTypeToBtype (
return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE);
case ARGI_REF_OR_STRING:
+
return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE);
case ARGI_REGION_OR_BUFFER:
@@ -159,10 +169,12 @@ AnMapArgTypeToBtype (
return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | ACPI_BTYPE_FIELD_UNIT);
case ARGI_DATAREFOBJ:
+
return (ACPI_BTYPE_INTEGER |ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER |
ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE);
default:
+
break;
}
@@ -207,22 +219,28 @@ AnMapEtypeToBtype (
switch (Etype)
{
case ACPI_TYPE_INTEGER:
+
return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE);
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
+
return (ACPI_BTYPE_COMPUTE_DATA);
case ACPI_TYPE_PACKAGE:
+
return (ACPI_BTYPE_PACKAGE);
case ACPI_TYPE_FIELD_UNIT:
+
return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT);
case ACPI_TYPE_BUFFER_FIELD:
+
return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD);
case ACPI_TYPE_DDB_HANDLE:
+
return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE);
case ACPI_BTYPE_DEBUG_OBJECT:
@@ -232,6 +250,7 @@ AnMapEtypeToBtype (
return (0);
default:
+
return (1 << (Etype - 1));
}
}
@@ -259,6 +278,7 @@ AnMapEtypeToBtype (
return (ACPI_BTYPE_REFERENCE);
default:
+
printf ("Unhandled encoded type: %X\n", Etype);
return (0);
}
@@ -438,51 +458,67 @@ AnMapObjTypeToBtype (
switch (Op->Asl.ParseOpcode)
{
case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */
+
return (ACPI_BTYPE_BUFFER_FIELD);
case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */
+
return (ACPI_BTYPE_BUFFER);
case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */
+
return (ACPI_BTYPE_DDB_HANDLE);
case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */
+
return (ACPI_BTYPE_DEVICE);
case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */
+
return (ACPI_BTYPE_EVENT);
case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */
+
return (ACPI_BTYPE_FIELD_UNIT);
case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */
+
return (ACPI_BTYPE_INTEGER);
case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */
+
return (ACPI_BTYPE_METHOD);
case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */
+
return (ACPI_BTYPE_MUTEX);
case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */
+
return (ACPI_BTYPE_REGION);
case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */
+
return (ACPI_BTYPE_PACKAGE);
case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */
+
return (ACPI_BTYPE_POWER);
case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */
+
return (ACPI_BTYPE_STRING);
case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */
+
return (ACPI_BTYPE_THERMAL);
case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */
+
return (ACPI_BTYPE_OBJECTS_AND_REFS);
default:
+
return (0);
}
}
diff --git a/sys/contrib/dev/acpica/compiler/aslcodegen.c b/sys/contrib/dev/acpica/compiler/aslcodegen.c
index 13ba665..b7d510d 100644
--- a/sys/contrib/dev/acpica/compiler/aslcodegen.c
+++ b/sys/contrib/dev/acpica/compiler/aslcodegen.c
@@ -284,6 +284,7 @@ CgWriteAmlOpcode (
break;
default:
+
Aml.Opcode = Op->Asl.AmlOpcode;
break;
}
@@ -382,7 +383,9 @@ CgWriteAmlOpcode (
break;
default:
+
/* All data opcodes must appear above */
+
break;
}
}
@@ -560,7 +563,9 @@ CgWriteNode (
return;
default:
+
/* Internal data opcodes must all appear above */
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslcompile.c b/sys/contrib/dev/acpica/compiler/aslcompile.c
index 0bd713e..fd17c26 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompile.c
+++ b/sys/contrib/dev/acpica/compiler/aslcompile.c
@@ -133,7 +133,9 @@ AslCompilerSignon (
break;
default:
+
/* No other output types supported */
+
break;
}
@@ -207,7 +209,9 @@ AslCompilerFileHeader (
break;
default:
+
/* No other output types supported */
+
break;
}
@@ -226,11 +230,14 @@ AslCompilerFileHeader (
case ASL_FILE_C_SOURCE_OUTPUT:
case ASL_FILE_C_OFFSET_OUTPUT:
case ASL_FILE_C_INCLUDE_OUTPUT:
+
FlPrintFile (FileId, " */\n");
break;
default:
+
/* Nothing to do for other output types */
+
break;
}
}
diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.h b/sys/contrib/dev/acpica/compiler/aslcompiler.h
index 59a7b10..132ae7d 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/aslcompiler.h
@@ -291,6 +291,15 @@ AslError (
ACPI_PARSE_OBJECT *Op,
char *ExtraMessage);
+ACPI_STATUS
+AslDisableException (
+ char *MessageIdString);
+
+BOOLEAN
+AslIsExceptionDisabled (
+ UINT8 Level,
+ UINT8 MessageId);
+
void
AslCoreSubsystemError (
ACPI_PARSE_OBJECT *Op,
@@ -791,6 +800,17 @@ void
LkFindUnreferencedObjects (
void);
+/*
+ * aslmain - startup
+ */
+void
+Usage (
+ void);
+
+void
+AslFilenameHelp (
+ void);
+
/*
* aslnamesp - namespace output file generation
@@ -803,6 +823,13 @@ void
NsSetupNamespaceListing (
void *Handle);
+/*
+ * asloptions - command line processing
+ */
+int
+AslCommandLine (
+ int argc,
+ char **argv);
/*
* aslxref - namespace cross reference
diff --git a/sys/contrib/dev/acpica/compiler/aslerror.c b/sys/contrib/dev/acpica/compiler/aslerror.c
index 132d0bb..ff6ec36 100644
--- a/sys/contrib/dev/acpica/compiler/aslerror.c
+++ b/sys/contrib/dev/acpica/compiler/aslerror.c
@@ -201,6 +201,7 @@ AePrintException (
switch (Enode->Level)
{
case ASL_REMARK:
+
if (!Gbl_DisplayRemarks)
{
return;
@@ -208,6 +209,7 @@ AePrintException (
break;
case ASL_OPTIMIZATION:
+
if (!Gbl_DisplayOptimizations)
{
return;
@@ -215,6 +217,7 @@ AePrintException (
break;
default:
+
break;
}
}
@@ -676,6 +679,113 @@ AslCommonError (
/*******************************************************************************
*
+ * FUNCTION: AslDisableException
+ *
+ * PARAMETERS: MessageIdString - ID to be disabled
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Enter a message ID into the global disabled messages table
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AslDisableException (
+ char *MessageIdString)
+{
+ UINT32 MessageId;
+
+
+ /* Convert argument to an integer and validate it */
+
+ MessageId = (UINT32) strtoul (MessageIdString, NULL, 0);
+
+ if ((MessageId < 2000) || (MessageId > 5999))
+ {
+ printf ("\"%s\" is not a valid warning/remark ID\n",
+ MessageIdString);
+ return (AE_BAD_PARAMETER);
+ }
+
+ /* Insert value into the global disabled message array */
+
+ if (Gbl_DisabledMessagesIndex >= ASL_MAX_DISABLED_MESSAGES)
+ {
+ printf ("Too many messages have been disabled (max %u)\n",
+ ASL_MAX_DISABLED_MESSAGES);
+ return (AE_LIMIT);
+ }
+
+ Gbl_DisabledMessages[Gbl_DisabledMessagesIndex] = MessageId;
+ Gbl_DisabledMessagesIndex++;
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AslIsExceptionDisabled
+ *
+ * PARAMETERS: Level - Seriousness (Warning/error, etc.)
+ * MessageId - Index into global message buffer
+ *
+ * RETURN: TRUE if exception/message should be ignored
+ *
+ * DESCRIPTION: Check if the user has specified options such that this
+ * exception should be ignored
+ *
+ ******************************************************************************/
+
+BOOLEAN
+AslIsExceptionDisabled (
+ UINT8 Level,
+ UINT8 MessageId)
+{
+ UINT32 EncodedMessageId;
+ UINT32 i;
+
+
+ switch (Level)
+ {
+ case ASL_WARNING2:
+ case ASL_WARNING3:
+
+ /* Check for global disable via -w1/-w2/-w3 options */
+
+ if (Level > Gbl_WarningLevel)
+ {
+ return (TRUE);
+ }
+ /* Fall through */
+
+ case ASL_WARNING:
+ case ASL_REMARK:
+ /*
+ * Ignore this warning/remark if it has been disabled by
+ * the user (-vw option)
+ */
+ EncodedMessageId = MessageId + ((Level + 1) * 1000);
+ for (i = 0; i < Gbl_DisabledMessagesIndex; i++)
+ {
+ /* Simple implementation via fixed array */
+
+ if (EncodedMessageId == Gbl_DisabledMessages[i])
+ {
+ return (TRUE);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return (FALSE);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AslError
*
* PARAMETERS: Level - Seriousness (Warning/error, etc.)
@@ -698,32 +808,25 @@ AslError (
char *ExtraMessage)
{
- switch (Level)
- {
- case ASL_WARNING2:
- case ASL_WARNING3:
- if (Gbl_WarningLevel < Level)
- {
- return;
- }
- break;
+ /* Check if user wants to ignore this exception */
- default:
- break;
+ if (AslIsExceptionDisabled (Level, MessageId))
+ {
+ return;
}
if (Op)
{
AslCommonError (Level, MessageId, Op->Asl.LineNumber,
- Op->Asl.LogicalLineNumber,
- Op->Asl.LogicalByteOffset,
- Op->Asl.Column,
- Op->Asl.Filename, ExtraMessage);
+ Op->Asl.LogicalLineNumber,
+ Op->Asl.LogicalByteOffset,
+ Op->Asl.Column,
+ Op->Asl.Filename, ExtraMessage);
}
else
{
AslCommonError (Level, MessageId, 0,
- 0, 0, 0, NULL, ExtraMessage);
+ 0, 0, 0, NULL, ExtraMessage);
}
}
diff --git a/sys/contrib/dev/acpica/compiler/aslfold.c b/sys/contrib/dev/acpica/compiler/aslfold.c
index c01bce4..00595af 100644
--- a/sys/contrib/dev/acpica/compiler/aslfold.c
+++ b/sys/contrib/dev/acpica/compiler/aslfold.c
@@ -441,7 +441,6 @@ OpcAmlConstantWalk (
ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
break;
-
case ACPI_TYPE_STRING:
Op->Asl.ParseOpcode = PARSEOP_STRING_LITERAL;
@@ -455,7 +454,6 @@ OpcAmlConstantWalk (
break;
-
case ACPI_TYPE_BUFFER:
Op->Asl.ParseOpcode = PARSEOP_BUFFER;
@@ -493,8 +491,8 @@ OpcAmlConstantWalk (
ObjDesc->Buffer.Length);
break;
-
default:
+
printf ("Unsupported return type: %s\n",
AcpiUtGetObjectTypeName (ObjDesc));
break;
@@ -536,27 +534,32 @@ OpcUpdateIntegerNode (
switch (Op->Asl.AmlLength)
{
case 1:
+
TrUpdateNode (PARSEOP_BYTECONST, Op);
Op->Asl.AmlOpcode = AML_RAW_DATA_BYTE;
break;
case 2:
+
TrUpdateNode (PARSEOP_WORDCONST, Op);
Op->Asl.AmlOpcode = AML_RAW_DATA_WORD;
break;
case 4:
+
TrUpdateNode (PARSEOP_DWORDCONST, Op);
Op->Asl.AmlOpcode = AML_RAW_DATA_DWORD;
break;
case 8:
+
TrUpdateNode (PARSEOP_QWORDCONST, Op);
Op->Asl.AmlOpcode = AML_RAW_DATA_QWORD;
break;
case 0:
default:
+
OpcSetOptimalIntegerSize (Op);
TrUpdateNode (PARSEOP_INTEGER, Op);
break;
diff --git a/sys/contrib/dev/acpica/compiler/aslglobal.h b/sys/contrib/dev/acpica/compiler/aslglobal.h
index c15c669..e1be4ae 100644
--- a/sys/contrib/dev/acpica/compiler/aslglobal.h
+++ b/sys/contrib/dev/acpica/compiler/aslglobal.h
@@ -110,6 +110,7 @@ extern char *AslCompilertext;
#define ASL_DEFAULT_LINE_BUFFER_SIZE (1024 * 32) /* 32K */
#define ASL_MSG_BUFFER_SIZE 4096
+#define ASL_MAX_DISABLED_MESSAGES 32
#define HEX_TABLE_LINE_SIZE 8
#define HEX_LISTING_LINE_SIZE 8
@@ -224,6 +225,7 @@ ASL_EXTERN char *Gbl_TemplateSignature;
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentHexColumn, 0);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentAmlOffset, 0);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLine, 0);
+ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_DisabledMessagesIndex, 0);
ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_HexBytesWereWritten, FALSE);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_NumNamespaceObjects, 0);
ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_ReservedMethods, 0);
@@ -250,6 +252,7 @@ ASL_EXTERN UINT8 Gbl_AmlBuffer[HEX_LISTING_LINE_SIZE];
ASL_EXTERN char MsgBuffer[ASL_MSG_BUFFER_SIZE];
ASL_EXTERN char StringBuffer[ASL_MSG_BUFFER_SIZE];
ASL_EXTERN char StringBuffer2[ASL_MSG_BUFFER_SIZE];
+ASL_EXTERN UINT32 Gbl_DisabledMessages[ASL_MAX_DISABLED_MESSAGES];
#endif /* __ASLGLOBAL_H */
diff --git a/sys/contrib/dev/acpica/compiler/aslhex.c b/sys/contrib/dev/acpica/compiler/aslhex.c
index c6b310e..8d69b92 100644
--- a/sys/contrib/dev/acpica/compiler/aslhex.c
+++ b/sys/contrib/dev/acpica/compiler/aslhex.c
@@ -107,7 +107,9 @@ HxDoHexOutput (
break;
default:
+
/* No other output types supported */
+
break;
}
}
diff --git a/sys/contrib/dev/acpica/compiler/asllength.c b/sys/contrib/dev/acpica/compiler/asllength.c
index 57835a6..53e860c 100644
--- a/sys/contrib/dev/acpica/compiler/asllength.c
+++ b/sys/contrib/dev/acpica/compiler/asllength.c
@@ -258,6 +258,7 @@ CgGenerateAmlOpcodeLength (
break;
default:
+
/* All data opcodes must be above */
break;
}
@@ -326,6 +327,7 @@ CgGenerateAmlLengths (
return;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/asllisting.c b/sys/contrib/dev/acpica/compiler/asllisting.c
index 8585f7d..2b02541 100644
--- a/sys/contrib/dev/acpica/compiler/asllisting.c
+++ b/sys/contrib/dev/acpica/compiler/asllisting.c
@@ -157,6 +157,8 @@ LsGenerateListing (
if (FileId == ASL_FILE_C_OFFSET_OUTPUT)
{
+ Gbl_CurrentAmlOffset = 0;
+
/* Offset table file has a special header and footer */
LsDoOffsetTableHeader (FileId);
@@ -265,9 +267,10 @@ LsTreeWriteWalk (
DbgPrint (ASL_TREE_OUTPUT,
"%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level);
+
UtPrintFormattedName (Op->Asl.ParseOpcode, Level);
- DbgPrint (ASL_TREE_OUTPUT, "\n");
+ DbgPrint (ASL_TREE_OUTPUT, " (%.4X)\n", Op->Asl.ParseOpcode);
return (AE_OK);
}
@@ -319,16 +322,20 @@ LsWriteNodeToListing (
break;
default:
+
switch (OpClass)
{
case AML_CLASS_NAMED_OBJECT:
+
switch (Op->Asl.AmlOpcode)
{
case AML_SCOPE_OP:
case AML_ALIAS_OP:
+
break;
default:
+
if (Op->Asl.ExternalName)
{
LsFlushListingBuffer (FileId);
@@ -339,7 +346,9 @@ LsWriteNodeToListing (
break;
default:
+
/* Don't care about other objects */
+
break;
}
break;
@@ -427,7 +436,9 @@ LsWriteNodeToListing (
default:
+
/* All other opcodes have an AML opcode */
+
break;
}
@@ -443,7 +454,6 @@ LsWriteNodeToListing (
break;
-
case AML_CLASS_NAMED_OBJECT:
switch (Op->Asl.AmlOpcode)
@@ -451,7 +461,6 @@ LsWriteNodeToListing (
case AML_FIELD_OP:
case AML_INDEX_FIELD_OP:
case AML_BANK_FIELD_OP:
-
/*
* For fields, we want to dump all the AML after the
* entire definition
@@ -479,6 +488,7 @@ LsWriteNodeToListing (
break;
default:
+
LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber,
FileId);
break;
@@ -503,7 +513,6 @@ LsWriteNodeToListing (
case ASL_FILE_C_SOURCE_OUTPUT:
case ASL_FILE_ASM_INCLUDE_OUTPUT:
case ASL_FILE_C_INCLUDE_OUTPUT:
-
/*
* For named objects, we will create a valid symbol so that the
* AML code can be referenced from C or ASM
@@ -558,7 +567,9 @@ LsWriteNodeToListing (
break;
default:
+
/* Nothing to do for listing file */
+
break;
}
}
@@ -579,6 +590,7 @@ LsWriteNodeToListing (
break;
case AML_CLASS_UNKNOWN:
+
break;
}
}
diff --git a/sys/contrib/dev/acpica/compiler/asllistsup.c b/sys/contrib/dev/acpica/compiler/asllistsup.c
index 905bb4a..795672e 100644
--- a/sys/contrib/dev/acpica/compiler/asllistsup.c
+++ b/sys/contrib/dev/acpica/compiler/asllistsup.c
@@ -251,7 +251,9 @@ LsWriteListingHexBytes (
break;
default:
+
/* No other types supported */
+
return;
}
}
@@ -617,7 +619,9 @@ LsFlushListingBuffer (
break;
default:
+
/* No other types supported */
+
return;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslload.c b/sys/contrib/dev/acpica/compiler/aslload.c
index 813e603..57519d1 100644
--- a/sys/contrib/dev/acpica/compiler/aslload.c
+++ b/sys/contrib/dev/acpica/compiler/aslload.c
@@ -177,7 +177,9 @@ LdLoadFieldElements (
break;
default:
+
/* No other opcodes should arrive here */
+
return (AE_BAD_PARAMETER);
}
@@ -374,6 +376,7 @@ LdNamespace1Begin (
default:
/* All other opcodes go below */
+
break;
}
@@ -422,7 +425,6 @@ LdNamespace1Begin (
case PARSEOP_EXTERNAL:
-
/*
* "External" simply enters a name and type into the namespace.
* We must be careful to not open a new scope, however, no matter
@@ -466,7 +468,6 @@ LdNamespace1Begin (
case PARSEOP_SCOPE:
-
/*
* The name referenced by Scope(Name) must already exist at this point.
* In other words, forward references for Scope() are not supported.
@@ -521,7 +522,6 @@ LdNamespace1Begin (
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
-
/*
* These types we will allow, but we will change the type.
* This enables some existing code of the form:
diff --git a/sys/contrib/dev/acpica/compiler/asllookup.c b/sys/contrib/dev/acpica/compiler/asllookup.c
index 67952a6..66c0950 100644
--- a/sys/contrib/dev/acpica/compiler/asllookup.c
+++ b/sys/contrib/dev/acpica/compiler/asllookup.c
@@ -144,9 +144,11 @@ LkIsObjectUsed (
case ACPI_TYPE_PROCESSOR:
case ACPI_TYPE_POWER:
case ACPI_TYPE_LOCAL_RESOURCE:
+
return (AE_OK);
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslmain.c b/sys/contrib/dev/acpica/compiler/aslmain.c
index 488f186..2a70588 100644
--- a/sys/contrib/dev/acpica/compiler/aslmain.c
+++ b/sys/contrib/dev/acpica/compiler/aslmain.c
@@ -41,7 +41,6 @@
* POSSIBILITY OF SUCH DAMAGES.
*/
-
#define _DECLARE_GLOBALS
#include <contrib/dev/acpica/compiler/aslcompiler.h>
@@ -49,26 +48,11 @@
#include <contrib/dev/acpica/include/acdisasm.h>
#include <signal.h>
-#ifdef _DEBUG
-#include <crtdbg.h>
-#endif
-
#define _COMPONENT ACPI_COMPILER
ACPI_MODULE_NAME ("aslmain")
-/* Local prototypes */
-
-static void
-Options (
- void);
-
-static void
-FilenameHelp (
- void);
-static void
-Usage (
- void);
+/* Local prototypes */
static void ACPI_SYSTEM_XFACE
AslSignalHandler (
@@ -78,34 +62,10 @@ static void
AslInitialize (
void);
-static int
-AslCommandLine (
- int argc,
- char **argv);
-
-static int
-AslDoOptions (
- int argc,
- char **argv,
- BOOLEAN IsResponseFile);
-
-static void
-AslMergeOptionTokens (
- char *InBuffer,
- char *OutBuffer);
-
-static int
-AslDoResponseFile (
- char *Filename);
-
-
-#define ASL_TOKEN_SEPARATORS " \t\n"
-#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
-
/*******************************************************************************
*
- * FUNCTION: Options
+ * FUNCTION: Usage
*
* PARAMETERS: None
*
@@ -116,10 +76,12 @@ AslDoResponseFile (
*
******************************************************************************/
-static void
-Options (
+void
+Usage (
void)
{
+ printf ("%s\n\n", ASL_COMPLIANCE);
+ ACPI_USAGE_HEADER ("iasl [Options] [Files]");
printf ("\nGlobal:\n");
ACPI_OPTION ("-@ <file>", "Specify command file");
@@ -140,6 +102,7 @@ Options (
ACPI_OPTION ("-vo", "Enable optimization comments");
ACPI_OPTION ("-vr", "Disable remarks");
ACPI_OPTION ("-vs", "Disable signon");
+ ACPI_OPTION ("-vw <messageid>", "Disable specific warning or remark");
ACPI_OPTION ("-w1 -w2 -w3", "Set warning reporting level");
ACPI_OPTION ("-we", "Report warnings as errors");
@@ -209,8 +172,8 @@ Options (
*
******************************************************************************/
-static void
-FilenameHelp (
+void
+AslFilenameHelp (
void)
{
@@ -225,29 +188,6 @@ FilenameHelp (
}
-/*******************************************************************************
- *
- * FUNCTION: Usage
- *
- * PARAMETERS: None
- *
- * RETURN: None
- *
- * DESCRIPTION: Display usage and option message
- *
- ******************************************************************************/
-
-static void
-Usage (
- void)
-{
-
- printf ("%s\n\n", ASL_COMPLIANCE);
- ACPI_USAGE_HEADER ("iasl [Options] [Files]");
- Options ();
-}
-
-
/******************************************************************************
*
* FUNCTION: AslSignalHandler
@@ -310,11 +250,6 @@ AslInitialize (
UINT32 i;
-#ifdef _DEBUG
- _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(0));
-#endif
-
-
for (i = 0; i < ASL_NUM_FILES; i++)
{
Gbl_Files[i].Handle = NULL;
@@ -326,675 +261,6 @@ AslInitialize (
Gbl_Files[ASL_FILE_STDERR].Handle = stderr;
Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR";
-
- /* Allocate the line buffer(s) */
-
- Gbl_LineBufferSize /= 2;
- UtExpandLineBuffers ();
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslMergeOptionTokens
- *
- * PARAMETERS: InBuffer - Input containing an option string
- * OutBuffer - Merged output buffer
- *
- * RETURN: None
- *
- * DESCRIPTION: Remove all whitespace from an option string.
- *
- ******************************************************************************/
-
-static void
-AslMergeOptionTokens (
- char *InBuffer,
- char *OutBuffer)
-{
- char *Token;
-
-
- *OutBuffer = 0;
-
- Token = strtok (InBuffer, ASL_TOKEN_SEPARATORS);
- while (Token)
- {
- strcat (OutBuffer, Token);
- Token = strtok (NULL, ASL_TOKEN_SEPARATORS);
- }
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslDoResponseFile
- *
- * PARAMETERS: Filename - Name of the response file
- *
- * RETURN: Status
- *
- * DESCRIPTION: Open a response file and process all options within.
- *
- ******************************************************************************/
-
-static int
-AslDoResponseFile (
- char *Filename)
-{
- char *argv = StringBuffer2;
- FILE *ResponseFile;
- int OptStatus = 0;
- int Opterr;
- int Optind;
-
-
- ResponseFile = fopen (Filename, "r");
- if (!ResponseFile)
- {
- printf ("Could not open command file %s, %s\n",
- Filename, strerror (errno));
- return (-1);
- }
-
- /* Must save the current GetOpt globals */
-
- Opterr = AcpiGbl_Opterr;
- Optind = AcpiGbl_Optind;
-
- /*
- * Process all lines in the response file. There must be one complete
- * option per line
- */
- while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile))
- {
- /* Compress all tokens, allowing us to use a single argv entry */
-
- AslMergeOptionTokens (StringBuffer, StringBuffer2);
-
- /* Process the option */
-
- AcpiGbl_Opterr = 0;
- AcpiGbl_Optind = 0;
-
- OptStatus = AslDoOptions (1, &argv, TRUE);
- if (OptStatus)
- {
- printf ("Invalid option in command file %s: %s\n",
- Filename, StringBuffer);
- break;
- }
- }
-
- /* Restore the GetOpt globals */
-
- AcpiGbl_Opterr = Opterr;
- AcpiGbl_Optind = Optind;
-
- fclose (ResponseFile);
- return (OptStatus);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslDoOptions
- *
- * PARAMETERS: argc/argv - Standard argc/argv
- * IsResponseFile - TRUE if executing a response file.
- *
- * RETURN: Status
- *
- * DESCRIPTION: Command line option processing
- *
- ******************************************************************************/
-
-static int
-AslDoOptions (
- int argc,
- char **argv,
- BOOLEAN IsResponseFile)
-{
- int j;
- ACPI_STATUS Status;
-
-
- /* Get the command line options */
-
- while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j)
- {
- case '@': /* Begin a response file */
-
- if (IsResponseFile)
- {
- printf ("Nested command files are not supported\n");
- return (-1);
- }
-
- if (AslDoResponseFile (AcpiGbl_Optarg))
- {
- return (-1);
- }
- break;
-
-
- case 'b': /* Debug output options */
- switch (AcpiGbl_Optarg[0])
- {
- case 'f':
- AslCompilerdebug = 1; /* same as yydebug */
- DtParserdebug = 1;
- PrParserdebug = 1;
- break;
-
- case 't':
- break;
-
- default:
- printf ("Unknown option: -b%s\n", AcpiGbl_Optarg);
- return (-1);
- }
-
- /* Produce debug output file */
-
- Gbl_DebugFlag = TRUE;
- break;
-
-
- case 'c':
- switch (AcpiGbl_Optarg[0])
- {
- case 'r':
- Gbl_NoResourceChecking = TRUE;
- break;
-
- default:
- printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'd': /* Disassembler */
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- Gbl_DoCompile = FALSE;
- break;
-
- case 'a':
- Gbl_DoCompile = FALSE;
- Gbl_DisassembleAll = TRUE;
- break;
-
- case 'b': /* Do not convert buffers to resource descriptors */
- AcpiGbl_NoResourceDisassembly = TRUE;
- break;
-
- case 'c':
- break;
-
- default:
- printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
- return (-1);
- }
-
- Gbl_DisasmFlag = TRUE;
- break;
-
-
- case 'D': /* Define a symbol */
- PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
- break;
-
-
- case 'e': /* External files for disassembler */
- Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
- if (ACPI_FAILURE (Status))
- {
- printf ("Could not add %s to external list\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'f': /* Ignore errors and force creation of aml file */
- Gbl_IgnoreErrors = TRUE;
- break;
-
-
- case 'G':
- Gbl_CompileGeneric = TRUE;
- break;
-
-
- case 'g': /* Get all ACPI tables */
-
- Gbl_GetAllTables = TRUE;
- Gbl_DoCompile = FALSE;
- break;
-
-
- case 'h':
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- Usage ();
- exit (0);
-
- case 'c':
- UtDisplayConstantOpcodes ();
- exit (0);
-
- case 'f':
- FilenameHelp ();
- exit (0);
-
- case 'r':
- /* reserved names */
-
- ApDisplayReservedNames ();
- exit (0);
-
- case 't':
- UtDisplaySupportedTables ();
- exit (0);
-
- default:
- printf ("Unknown option: -h%s\n", AcpiGbl_Optarg);
- return (-1);
- }
-
-
- case 'I': /* Add an include file search directory */
- FlAddIncludeDirectory (AcpiGbl_Optarg);
- break;
-
-
- case 'i': /* Output AML as an include file */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
-
- /* Produce assembly code include file */
-
- Gbl_AsmIncludeOutputFlag = TRUE;
- break;
-
- case 'c':
-
- /* Produce C include file */
-
- Gbl_C_IncludeOutputFlag = TRUE;
- break;
-
- case 'n':
-
- /* Compiler/Disassembler: Ignore the NOOP operator */
-
- AcpiGbl_IgnoreNoopOperator = TRUE;
- break;
-
- default:
- printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'l': /* Listing files */
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- /* Produce listing file (Mixed source/aml) */
-
- Gbl_ListingFlag = TRUE;
- break;
-
- case 'i':
- /* Produce preprocessor output file */
-
- Gbl_PreprocessorOutputFlag = TRUE;
- break;
-
- case 'n':
- /* Produce namespace file */
-
- Gbl_NsOutputFlag = TRUE;
- break;
-
- case 's':
- /* Produce combined source file */
-
- Gbl_SourceOutputFlag = TRUE;
- break;
-
- default:
- printf ("Unknown option: -l%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'm': /* Set line buffer size */
- Gbl_LineBufferSize = (UINT32) strtoul (AcpiGbl_Optarg, NULL, 0) * 1024;
- if (Gbl_LineBufferSize < ASL_DEFAULT_LINE_BUFFER_SIZE)
- {
- Gbl_LineBufferSize = ASL_DEFAULT_LINE_BUFFER_SIZE;
- }
- printf ("Line Buffer Size: %u\n", Gbl_LineBufferSize);
- break;
-
-
- case 'n': /* Parse only */
- Gbl_ParseOnlyFlag = TRUE;
- break;
-
-
- case 'o': /* Control compiler AML optimizations */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
-
- /* Disable all optimizations */
-
- Gbl_FoldConstants = FALSE;
- Gbl_IntegerOptimizationFlag = FALSE;
- Gbl_ReferenceOptimizationFlag = FALSE;
- break;
-
- case 'f':
-
- /* Disable folding on "normal" expressions */
-
- Gbl_FoldConstants = FALSE;
- break;
-
- case 'i':
-
- /* Disable integer optimization to constants */
-
- Gbl_IntegerOptimizationFlag = FALSE;
- break;
-
- case 'n':
-
- /* Disable named reference optimization */
-
- Gbl_ReferenceOptimizationFlag = FALSE;
- break;
-
- case 't':
-
- /* Display compile time(s) */
-
- Gbl_CompileTimesFlag = TRUE;
- break;
-
- default:
- printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'P': /* Preprocessor options */
- switch (AcpiGbl_Optarg[0])
- {
- case '^': /* Proprocess only, emit (.i) file */
- Gbl_PreprocessOnly = TRUE;
- Gbl_PreprocessorOutputFlag = TRUE;
- break;
-
- case 'n': /* Disable preprocessor */
- Gbl_PreprocessFlag = FALSE;
- break;
-
- default:
- printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'p': /* Override default AML output filename */
- Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
- Gbl_UseDefaultAmlFilename = FALSE;
- break;
-
-
- case 'r': /* Override revision found in table header */
- Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
- break;
-
-
- case 's': /* Create AML in a source code file */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
-
- /* Produce assembly code output file */
-
- Gbl_AsmOutputFlag = TRUE;
- break;
-
- case 'c':
-
- /* Produce C hex output file */
-
- Gbl_C_OutputFlag = TRUE;
- break;
-
- case 'o':
-
- /* Produce AML offset table in C */
-
- Gbl_C_OffsetTableFlag = TRUE;
- break;
-
- default:
- printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 't': /* Produce hex table output file */
- switch (AcpiGbl_Optarg[0])
- {
- case 'a':
- Gbl_HexOutputFlag = HEX_OUTPUT_ASM;
- break;
-
- case 'c':
- Gbl_HexOutputFlag = HEX_OUTPUT_C;
- break;
-
- case 's':
- Gbl_HexOutputFlag = HEX_OUTPUT_ASL;
- break;
-
- default:
- printf ("Unknown option: -t%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'T': /* Create a ACPI table template file */
- Gbl_DoTemplates = TRUE;
- Gbl_TemplateSignature = AcpiGbl_Optarg;
- break;
-
-
- case 'v': /* Version and verbosity settings */
- switch (AcpiGbl_Optarg[0])
- {
- case '^':
- printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
- exit (0);
-
- case 'a':
- /* Disable All error/warning messages */
-
- Gbl_NoErrors = TRUE;
- break;
-
- case 'i':
- /*
- * Support for integrated development environment(s).
- *
- * 1) No compiler signon
- * 2) Send stderr messages to stdout
- * 3) Less verbose error messages (single line only for each)
- * 4) Error/warning messages are formatted appropriately to
- * be recognized by MS Visual Studio
- */
- Gbl_VerboseErrors = FALSE;
- Gbl_DoSignon = FALSE;
- Gbl_Files[ASL_FILE_STDERR].Handle = stdout;
- break;
-
- case 'o':
- Gbl_DisplayOptimizations = TRUE;
- break;
-
- case 'r':
- Gbl_DisplayRemarks = FALSE;
- break;
-
- case 's':
- Gbl_DoSignon = FALSE;
- break;
-
- case 't':
- Gbl_VerboseTemplates = TRUE;
- break;
-
- default:
- printf ("Unknown option: -v%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'w': /* Set warning levels */
- switch (AcpiGbl_Optarg[0])
- {
- case '1':
- Gbl_WarningLevel = ASL_WARNING;
- break;
-
- case '2':
- Gbl_WarningLevel = ASL_WARNING2;
- break;
-
- case '3':
- Gbl_WarningLevel = ASL_WARNING3;
- break;
-
- case 'e':
- Gbl_WarningsAsErrors = TRUE;
- break;
-
- default:
- printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
- return (-1);
- }
- break;
-
-
- case 'x': /* Set debug print output level */
- AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
- break;
-
-
- case 'z':
- Gbl_UseOriginalCompilerId = TRUE;
- break;
-
-
- default:
- return (-1);
- }
-
- return (0);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AslCommandLine
- *
- * PARAMETERS: argc/argv
- *
- * RETURN: Last argv index
- *
- * DESCRIPTION: Command line processing
- *
- ******************************************************************************/
-
-static int
-AslCommandLine (
- int argc,
- char **argv)
-{
- int BadCommandLine = 0;
- ACPI_STATUS Status;
-
-
- /* Minimum command line contains at least the command and an input file */
-
- if (argc < 2)
- {
- printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
- Usage ();
- exit (1);
- }
-
- /* Process all command line options */
-
- BadCommandLine = AslDoOptions (argc, argv, FALSE);
-
- if (Gbl_DoTemplates)
- {
- Status = DtCreateTemplates (Gbl_TemplateSignature);
- if (ACPI_FAILURE (Status))
- {
- exit (-1);
- }
- exit (1);
- }
-
- /* Next parameter must be the input filename */
-
- if (!argv[AcpiGbl_Optind] &&
- !Gbl_DisasmFlag &&
- !Gbl_GetAllTables)
- {
- printf ("Missing input filename\n");
- BadCommandLine = TRUE;
- }
-
- if (Gbl_DoSignon)
- {
- printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
- if (Gbl_IgnoreErrors)
- {
- printf ("Ignoring all errors, forcing AML file generation\n\n");
- }
- }
-
- /* Abort if anything went wrong on the command line */
-
- if (BadCommandLine)
- {
- printf ("\n");
- Usage ();
- exit (1);
- }
-
- return (AcpiGbl_Optind);
}
@@ -1021,24 +287,24 @@ main (
int Index2;
- signal (SIGINT, AslSignalHandler);
+ ACPI_DEBUG_INITIALIZE (); /* For debug version only */
+ /* Initialize preprocessor and compiler before command line processing */
+
+ signal (SIGINT, AslSignalHandler);
AcpiGbl_ExternalFileList = NULL;
AcpiDbgLevel = 0;
-
-#ifdef _DEBUG
- _CrtSetDbgFlag (_CRTDBG_CHECK_ALWAYS_DF | _CRTDBG_LEAK_CHECK_DF |
- _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
-#endif
-
- /* Init and command line */
+ PrInitializePreprocessor ();
+ AslInitialize ();
Index1 = Index2 = AslCommandLine (argc, argv);
- AslInitialize ();
- PrInitializePreprocessor ();
+ /* Allocate the line buffer(s), must be after command line */
+
+ Gbl_LineBufferSize /= 2;
+ UtExpandLineBuffers ();
- /* Options that have no additional parameters or pathnames */
+ /* Perform global actions first/only */
if (Gbl_GetAllTables)
{
diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.h b/sys/contrib/dev/acpica/compiler/aslmessages.h
index 102148d..a104a44 100644
--- a/sys/contrib/dev/acpica/compiler/aslmessages.h
+++ b/sys/contrib/dev/acpica/compiler/aslmessages.h
@@ -46,17 +46,52 @@
#define __ASLMESSAGES_H
-#define ASL_WARNING 0
-#define ASL_WARNING2 1
-#define ASL_WARNING3 2
-#define ASL_ERROR 3
-#define ASL_REMARK 4
-#define ASL_OPTIMIZATION 5
-#define ASL_NUM_REPORT_LEVELS 6
+typedef enum
+{
+ ASL_OPTIMIZATION = 0,
+ ASL_REMARK,
+ ASL_WARNING,
+ ASL_WARNING2,
+ ASL_WARNING3,
+ ASL_ERROR,
+ ASL_NUM_REPORT_LEVELS
+
+} ASL_MESSAGE_TYPES;
+
+#ifdef ASL_EXCEPTIONS
+
+/* Strings for message reporting levels, must match values above */
+const char *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = {
+ "Optimize",
+ "Remark ",
+ "Warning ",
+ "Warning ",
+ "Warning ",
+ "Error "
+};
-/* Values for all compiler messages */
+/* All lowercase versions for IDEs */
+const char *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
+ "optimize",
+ "remark ",
+ "warning ",
+ "warning ",
+ "warning ",
+ "error "
+};
+
+#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings above */
+#endif
+
+/*
+ * Values for all compiler messages.
+ *
+ * NOTE: With the introduction of the -vw option to disable specific messages,
+ * new messages should only be added to the end of this list, so that values
+ * for existing messages are not disturbed.
+ */
typedef enum
{
ASL_MSG_RESERVED = 0,
@@ -180,6 +215,7 @@ typedef enum
ASL_MSG_SCOPE_TYPE,
ASL_MSG_SEEK,
ASL_MSG_SERIALIZED,
+ ASL_MSG_SERIALIZED_REQUIRED,
ASL_MSG_SINGLE_NAME_OPTIMIZATION,
ASL_MSG_SOME_NO_RETVAL,
ASL_MSG_STRING_LENGTH,
@@ -235,9 +271,15 @@ typedef enum
#ifdef ASL_EXCEPTIONS
-/* Actual message strings for each compiler message */
-
-char *AslMessages [] = {
+/*
+ * Actual message strings for each compiler message.
+ *
+ * NOTE: With the introduction of the -vw option to disable specific messages,
+ * new messages should only be added to the end of this list, so that values
+ * for existing messages are not disturbed.
+ */
+char *AslMessages [] =
+{
/* The zeroth message is reserved */ "",
/* ASL_MSG_ALIGNMENT */ "Must be a multiple of alignment/granularity value",
/* ASL_MSG_ALPHANUMERIC_STRING */ "String must be entirely alphanumeric",
@@ -358,6 +400,7 @@ char *AslMessages [] = {
/* ASL_MSG_SCOPE_TYPE */ "Existing object has invalid type for Scope operator",
/* ASL_MSG_SEEK */ "Could not seek file",
/* ASL_MSG_SERIALIZED */ "Control Method marked Serialized",
+/* ASL_MSG_SERIALIZED_REQUIRED */ "Control Method should be made Serialized",
/* ASL_MSG_SINGLE_NAME_OPTIMIZATION */ "NamePath optimized to NameSeg (uses run-time search path)",
/* ASL_MSG_SOME_NO_RETVAL */ "Called method may not always return a value",
/* ASL_MSG_STRING_LENGTH */ "String literal too long",
@@ -408,27 +451,6 @@ char *AslMessages [] = {
/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero"
};
-
-const char *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = {
- "Warning ",
- "Warning ",
- "Warning ",
- "Error ",
- "Remark ",
- "Optimize"
-};
-
-const char *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = {
- "warning ",
- "warning ",
- "warning ",
- "error ",
- "remark ",
- "optimize"
-};
-
-#define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings above */
-
#endif /* ASL_EXCEPTIONS */
#endif /* __ASLMESSAGES_H */
diff --git a/sys/contrib/dev/acpica/compiler/aslmethod.c b/sys/contrib/dev/acpica/compiler/aslmethod.c
index f104d44..72f7647 100644
--- a/sys/contrib/dev/acpica/compiler/aslmethod.c
+++ b/sys/contrib/dev/acpica/compiler/aslmethod.c
@@ -44,12 +44,22 @@
#include <contrib/dev/acpica/compiler/aslcompiler.h>
#include "aslcompiler.y.h"
+#include <contrib/dev/acpica/include/acparser.h>
+#include <contrib/dev/acpica/include/amlcode.h>
#define _COMPONENT ACPI_COMPILER
ACPI_MODULE_NAME ("aslmethod")
+/* Local prototypes */
+
+void
+MtCheckNamedObjectInMethod (
+ ACPI_PARSE_OBJECT *Op,
+ ASL_METHOD_INFO *MethodInfo);
+
+
/*******************************************************************************
*
* FUNCTION: MtMethodAnalysisWalkBegin
@@ -111,6 +121,8 @@ MtMethodAnalysisWalkBegin (
/* Get the SerializeRule and SyncLevel nodes, ignored here */
Next = Next->Asl.Next;
+ MethodInfo->ShouldBeSerialized = (UINT8) Next->Asl.Value.Integer;
+
Next = Next->Asl.Next;
ArgNode = Next;
@@ -181,7 +193,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_METHODCALL:
if (MethodInfo &&
@@ -191,7 +202,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_LOCAL0:
case PARSEOP_LOCAL1:
case PARSEOP_LOCAL2:
@@ -236,7 +246,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_ARG0:
case PARSEOP_ARG1:
case PARSEOP_ARG2:
@@ -287,7 +296,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_RETURN:
if (!MethodInfo)
@@ -320,7 +328,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_BREAK:
case PARSEOP_CONTINUE:
@@ -340,7 +347,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_STALL:
/* We can range check if the argument is an integer */
@@ -352,7 +358,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_DEVICE:
case PARSEOP_EVENT:
case PARSEOP_MUTEX:
@@ -372,7 +377,6 @@ MtMethodAnalysisWalkBegin (
}
break;
-
case PARSEOP_NAME:
/* Typecheck any predefined names statically defined with Name() */
@@ -410,17 +414,76 @@ MtMethodAnalysisWalkBegin (
}
break;
-
default:
+
break;
}
+ /* Check for named object creation within a non-serialized method */
+
+ MtCheckNamedObjectInMethod (Op, MethodInfo);
return (AE_OK);
}
/*******************************************************************************
*
+ * FUNCTION: MtCheckNamedObjectInMethod
+ *
+ * PARAMETERS: Op - Current parser op
+ * MethodInfo - Info for method being parsed
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Detect if a non-serialized method is creating a named object,
+ * which could possibly cause problems if two threads execute
+ * the method concurrently. Emit a remark in this case.
+ *
+ ******************************************************************************/
+
+void
+MtCheckNamedObjectInMethod (
+ ACPI_PARSE_OBJECT *Op,
+ ASL_METHOD_INFO *MethodInfo)
+{
+ const ACPI_OPCODE_INFO *OpInfo;
+
+
+ /* We don't care about actual method declarations */
+
+ if (Op->Asl.AmlOpcode == AML_METHOD_OP)
+ {
+ return;
+ }
+
+ /* Determine if we are creating a named object */
+
+ OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode);
+ if (OpInfo->Class == AML_CLASS_NAMED_OBJECT)
+ {
+ /*
+ * If we have a named object created within a non-serialized method,
+ * emit a remark that the method should be serialized.
+ *
+ * Reason: If a thread blocks within the method for any reason, and
+ * another thread enters the method, the method will fail because an
+ * attempt will be made to create the same object twice.
+ */
+ if (MethodInfo && !MethodInfo->ShouldBeSerialized)
+ {
+ AslError (ASL_REMARK, ASL_MSG_SERIALIZED_REQUIRED, MethodInfo->Op,
+ "due to creation of named objects within");
+
+ /* Emit message only ONCE per method */
+
+ MethodInfo->ShouldBeSerialized = TRUE;
+ }
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: MtMethodAnalysisWalkEnd
*
* PARAMETERS: ASL_WALK_CALLBACK
@@ -446,6 +509,7 @@ MtMethodAnalysisWalkEnd (
{
case PARSEOP_METHOD:
case PARSEOP_RETURN:
+
if (!MethodInfo)
{
printf ("No method info for method! [%s]\n", Op->Asl.Namepath);
@@ -458,6 +522,7 @@ MtMethodAnalysisWalkEnd (
break;
default:
+
break;
}
@@ -534,7 +599,6 @@ MtMethodAnalysisWalkEnd (
ACPI_FREE (MethodInfo);
break;
-
case PARSEOP_NAME:
/* Special check for two names like _L01 and _E01 in same scope */
@@ -542,7 +606,6 @@ MtMethodAnalysisWalkEnd (
ApCheckForGpeNameConflict (Op);
break;
-
case PARSEOP_RETURN:
/*
@@ -572,7 +635,6 @@ MtMethodAnalysisWalkEnd (
}
break;
-
case PARSEOP_IF:
if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) &&
@@ -588,7 +650,6 @@ MtMethodAnalysisWalkEnd (
}
break;
-
case PARSEOP_ELSE:
if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) &&
diff --git a/sys/contrib/dev/acpica/compiler/aslnamesp.c b/sys/contrib/dev/acpica/compiler/aslnamesp.c
index 5eb3b64..e7ad672 100644
--- a/sys/contrib/dev/acpica/compiler/aslnamesp.c
+++ b/sys/contrib/dev/acpica/compiler/aslnamesp.c
@@ -194,7 +194,6 @@ NsDoOneNamespaceObject (
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
-
case ACPI_TYPE_STRING:
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
@@ -203,7 +202,9 @@ NsDoOneNamespaceObject (
break;
default:
+
/* Nothing to do for other types */
+
break;
}
@@ -228,7 +229,6 @@ NsDoOneNamespaceObject (
ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer));
break;
-
case ACPI_TYPE_STRING:
if (Op->Asl.ParseOpcode == PARSEOP_NAME)
@@ -245,7 +245,6 @@ NsDoOneNamespaceObject (
Op->Asl.Value.String);
break;
-
case ACPI_TYPE_LOCAL_REGION_FIELD:
if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) ||
@@ -258,42 +257,47 @@ NsDoOneNamespaceObject (
Op->Asl.Parent->Asl.ExtraValue, (UINT32) Op->Asl.Value.Integer);
break;
-
case ACPI_TYPE_BUFFER_FIELD:
switch (Op->Asl.ParseOpcode)
{
case PARSEOP_CREATEBYTEFIELD:
+
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BYTE ( 8 bit)]");
break;
case PARSEOP_CREATEDWORDFIELD:
+
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [DWORD (32 bit)]");
break;
case PARSEOP_CREATEQWORDFIELD:
+
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [QWORD (64 bit)]");
break;
case PARSEOP_CREATEWORDFIELD:
+
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [WORD (16 bit)]");
break;
case PARSEOP_CREATEBITFIELD:
+
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BIT ( 1 bit)]");
break;
case PARSEOP_CREATEFIELD:
+
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Arbitrary Bit Field]");
break;
default:
+
break;
}
break;
-
case ACPI_TYPE_PACKAGE:
if (Op->Asl.ParseOpcode == PARSEOP_NAME)
@@ -316,7 +320,6 @@ NsDoOneNamespaceObject (
}
break;
-
case ACPI_TYPE_BUFFER:
if (Op->Asl.ParseOpcode == PARSEOP_NAME)
@@ -338,7 +341,6 @@ NsDoOneNamespaceObject (
}
break;
-
case ACPI_TYPE_METHOD:
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
@@ -346,14 +348,12 @@ NsDoOneNamespaceObject (
Op->Asl.AmlSubtreeLength);
break;
-
case ACPI_TYPE_LOCAL_RESOURCE:
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
" [Desc Offset 0x%.4X Bytes]", Node->Value);
break;
-
case ACPI_TYPE_LOCAL_RESOURCE_FIELD:
FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT,
@@ -372,9 +372,10 @@ NsDoOneNamespaceObject (
}
break;
-
default:
+
/* Nothing to do for other types */
+
break;
}
}
diff --git a/sys/contrib/dev/acpica/compiler/asloffset.c b/sys/contrib/dev/acpica/compiler/asloffset.c
index 02deb06..b21cc4b 100644
--- a/sys/contrib/dev/acpica/compiler/asloffset.c
+++ b/sys/contrib/dev/acpica/compiler/asloffset.c
@@ -58,7 +58,6 @@ LsEmitOffsetTableEntry (
UINT32 FileId,
ACPI_NAMESPACE_NODE *Node,
UINT32 Offset,
- UINT32 Length,
char *OpName,
UINT64 Value,
UINT8 AmlOpcode);
@@ -77,7 +76,9 @@ LsEmitOffsetTableEntry (
* Three types of objects are currently emitted to the offset table:
* 1) Tagged (named) resource descriptors
* 2) Named integer objects with constant integer values
- * 3) Operation Regions that have constant Offset (address) parameters
+ * 3) Named package objects
+ * 4) Operation Regions that have constant Offset (address) parameters
+ * 5) Control methods
*
* The offset table allows the BIOS to dynamically update the values of these
* objects at boot time.
@@ -94,7 +95,7 @@ LsAmlOffsetWalk (
ACPI_NAMESPACE_NODE *Node;
UINT32 Length;
UINT32 OffsetOfOpcode;
- ACPI_PARSE_OBJECT *AddressOp;
+ ACPI_PARSE_OBJECT *NextOp;
/* Ignore actual data blocks for resource descriptors */
@@ -119,13 +120,17 @@ LsAmlOffsetWalk (
(Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC))
{
LsEmitOffsetTableEntry (FileId, Node, Gbl_CurrentAmlOffset,
- Op->Asl.FinalAmlLength, Op->Asl.ParseOpName, 0, Op->Asl.Extra);
+ Op->Asl.ParseOpName, 0, Op->Asl.Extra);
+ Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength;
+ return (AE_OK);
}
- /* Named object -- Name (NameString, DataRefObject) */
-
- else if (Op->Asl.AmlOpcode == AML_NAME_OP)
+ switch (Op->Asl.AmlOpcode)
{
+ case AML_NAME_OP:
+
+ /* Named object -- Name (NameString, DataRefObject) */
+
if (!Op->Asl.Child)
{
FlPrintFile (FileId, "%s NO CHILD!\n", MsgBuffer);
@@ -154,39 +159,50 @@ LsAmlOffsetWalk (
case AML_DWORD_OP:
case AML_QWORD_OP:
- /* The +1/-1 is to handle the integer size prefix (opcode) */
+ /* The +1 is to handle the integer size prefix (opcode) */
LsEmitOffsetTableEntry (FileId, Node,
(Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
- (Op->Asl.FinalAmlLength - 1), Op->Asl.ParseOpName,
- Op->Asl.Value.Integer, (UINT8) Op->Asl.AmlOpcode);
+ Op->Asl.ParseOpName, Op->Asl.Value.Integer,
+ (UINT8) Op->Asl.AmlOpcode);
break;
- default:
+ case AML_PACKAGE_OP:
+ case AML_VAR_PACKAGE_OP:
+
+ NextOp = Op->Asl.Child;
+
+ LsEmitOffsetTableEntry (FileId, Node,
+ (Gbl_CurrentAmlOffset + OffsetOfOpcode),
+ Op->Asl.ParseOpName,
+ NextOp->Asl.Value.Integer,
+ (UINT8) Op->Asl.AmlOpcode);
break;
+
+ default:
+ break;
}
Gbl_CurrentAmlOffset += Length;
return (AE_OK);
- }
- /* OperationRegion (NameString, RegionSpace, RegionOffset, RegionLength) */
+ case AML_REGION_OP:
+
+ /* OperationRegion (NameString, RegionSpace, RegionOffset, RegionLength) */
- else if (Op->Asl.AmlOpcode == AML_REGION_OP)
- {
Length = Op->Asl.FinalAmlLength;
/* Get the name/namepath node */
- AddressOp = Op->Asl.Child;
- OffsetOfOpcode = Length + AddressOp->Asl.FinalAmlLength + 1;
+ NextOp = Op->Asl.Child;
+ OffsetOfOpcode = Length + NextOp->Asl.FinalAmlLength + 1;
/* Get the SpaceId node, then the Offset (address) node */
- AddressOp = AddressOp->Asl.Next;
- AddressOp = AddressOp->Asl.Next;
+ NextOp = NextOp->Asl.Next;
+ NextOp = NextOp->Asl.Next;
- switch (AddressOp->Asl.AmlOpcode)
+ switch (NextOp->Asl.AmlOpcode)
{
/*
* We are only interested in integer constants that can be changed
@@ -198,12 +214,10 @@ LsAmlOffsetWalk (
case AML_DWORD_OP:
case AML_QWORD_OP:
- /* The +1/-1 is to handle the integer size prefix (opcode) */
-
LsEmitOffsetTableEntry (FileId, Node,
(Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
- (AddressOp->Asl.FinalAmlLength - 1), Op->Asl.ParseOpName,
- AddressOp->Asl.Value.Integer, (UINT8) AddressOp->Asl.AmlOpcode);
+ Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
+ (UINT8) NextOp->Asl.AmlOpcode);
Gbl_CurrentAmlOffset += Length;
return (AE_OK);
@@ -211,6 +225,31 @@ LsAmlOffsetWalk (
default:
break;
}
+ break;
+
+ case AML_METHOD_OP:
+
+ /* Method (Namepath, ...) */
+
+ Length = Op->Asl.FinalAmlLength;
+
+ /* Get the NameSeg/NamePath Op */
+
+ NextOp = Op->Asl.Child;
+
+ /* Point to the *last* nameseg in the namepath */
+
+ OffsetOfOpcode = NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE;
+
+ LsEmitOffsetTableEntry (FileId, Node,
+ (Gbl_CurrentAmlOffset + OffsetOfOpcode + Length),
+ Op->Asl.ParseOpName,
+ *((UINT32 *) &NextOp->Asl.Value.Buffer[OffsetOfOpcode]),
+ (UINT8) Op->Asl.AmlOpcode);
+ break;
+
+ default:
+ break;
}
Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength;
@@ -225,7 +264,6 @@ LsAmlOffsetWalk (
* PARAMETERS: FileId - ID of current listing file
* Node - Namespace node associated with the name
* Offset - Offset of the value within the AML table
- * Length - Length in bytes of the value
* OpName - Name of the AML opcode
* Value - Current value of the AML field
* AmlOpcode - Opcode associated with the field
@@ -241,7 +279,6 @@ LsEmitOffsetTableEntry (
UINT32 FileId,
ACPI_NAMESPACE_NODE *Node,
UINT32 Offset,
- UINT32 Length,
char *OpName,
UINT64 Value,
UINT8 AmlOpcode)
@@ -293,8 +330,6 @@ LsDoOffsetTableHeader (
UINT32 FileId)
{
- Gbl_CurrentAmlOffset = 0;
-
FlPrintFile (FileId,
"#ifndef __AML_OFFSET_TABLE_H\n"
"#define __AML_OFFSET_TABLE_H\n\n");
@@ -302,14 +337,41 @@ LsDoOffsetTableHeader (
FlPrintFile (FileId, "typedef struct {\n"
" char *Pathname;\n"
" unsigned long Offset;\n"
- " unsigned char AmlOpcode;\n"
- " unsigned long long AmlValue;\n"
+ " unsigned char Opcode;\n"
+ " unsigned long long Value;\n"
"} AML_OFFSET_TABLE_ENTRY;\n\n");
FlPrintFile (FileId,
"#endif /* __AML_OFFSET_TABLE_H */\n\n");
FlPrintFile (FileId,
+ "/*\n"
+ " * Information about supported object types:\n"
+ " *\n"
+ " * Integers:\n"
+ " * Offset points to the actual integer data\n"
+ " * Opcode is the integer prefix, indicates length of the data\n"
+ " * Value is the existing value in the AML\n"
+ " *\n"
+ " * Packages:\n"
+ " * Offset points to the package opcode\n"
+ " * Opcode is the package or var_package opcode\n"
+ " * Value is the package element cound\n"
+ " *\n"
+ " * Operation Regions:\n"
+ " * Offset points to the region address data\n"
+ " * Opcode is the address integer prefix, indicates length of the data\n"
+ " * Value is the existing address value in the AML\n"
+ " *\n"
+ " * Control Methods:\n"
+ " * Offset points to the first byte of the namepath\n"
+ " *\n"
+ " * Resource Descriptors:\n"
+ " * Offset points to the start of the descriptor\n"
+ " * Opcode is the descriptor type\n"
+ " */\n");
+
+ FlPrintFile (FileId,
"AML_OFFSET_TABLE_ENTRY %s_%s_OffsetTable[] =\n{\n",
Gbl_TableSignature, Gbl_TableId);
}
diff --git a/sys/contrib/dev/acpica/compiler/aslopcodes.c b/sys/contrib/dev/acpica/compiler/aslopcodes.c
index ca358dc..6d39da9 100644
--- a/sys/contrib/dev/acpica/compiler/aslopcodes.c
+++ b/sys/contrib/dev/acpica/compiler/aslopcodes.c
@@ -266,6 +266,7 @@ OpcSetOptimalIntegerSize (
break;
default:
+
break;
}
}
@@ -811,7 +812,9 @@ OpcGenerateAmlOpcode (
break;
default:
+
/* Nothing to do for other opcodes */
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/asloperands.c b/sys/contrib/dev/acpica/compiler/asloperands.c
index f773f6f..7567eb7 100644
--- a/sys/contrib/dev/acpica/compiler/asloperands.c
+++ b/sys/contrib/dev/acpica/compiler/asloperands.c
@@ -298,7 +298,6 @@ OpnDoFieldCommon (
/* Nothing additional to do */
break;
-
case PARSEOP_OFFSET:
/* New offset into the field */
@@ -342,7 +341,6 @@ OpnDoFieldCommon (
}
break;
-
case PARSEOP_NAMESEG:
case PARSEOP_RESERVED_BYTES:
@@ -360,6 +358,7 @@ OpnDoFieldCommon (
case AML_FIELD_ACCESS_BYTE:
case AML_FIELD_ACCESS_BUFFER:
default:
+
MinimumLength = 8;
break;
@@ -380,7 +379,9 @@ OpnDoFieldCommon (
break;
default:
+
/* All supported field opcodes must appear above */
+
break;
}
@@ -610,7 +611,6 @@ OpnDoBuffer (
}
break;
-
case PARSEOP_STRING_LITERAL:
/*
@@ -624,18 +624,16 @@ OpnDoBuffer (
InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA;
break;
-
case PARSEOP_RAW_DATA:
/* Buffer nodes are already initialized (e.g. Unicode operator) */
return;
-
case PARSEOP_DEFAULT_ARG:
break;
-
default:
+
AslError (ASL_ERROR, ASL_MSG_INVALID_OPERAND, InitializerOp,
"Unknown buffer initializer opcode");
printf ("Unknown buffer initializer opcode [%s]\n",
@@ -1092,6 +1090,7 @@ OpnAttachNameToNode (
return;
default:
+
return;
}
@@ -1130,42 +1129,52 @@ OpnGenerateAmlOperands (
switch (Op->Asl.ParseOpcode)
{
case PARSEOP_DEFINITIONBLOCK:
+
OpnDoDefinitionBlock (Op);
break;
case PARSEOP_METHOD:
+
OpnDoMethod (Op);
break;
case PARSEOP_MUTEX:
+
OpnDoMutex (Op);
break;
case PARSEOP_FIELD:
+
OpnDoField (Op);
break;
case PARSEOP_INDEXFIELD:
+
OpnDoIndexField (Op);
break;
case PARSEOP_BANKFIELD:
+
OpnDoBankField (Op);
break;
case PARSEOP_BUFFER:
+
OpnDoBuffer (Op);
break;
case PARSEOP_LOADTABLE:
+
OpnDoLoadTable (Op);
break;
case PARSEOP_OPERATIONREGION:
+
OpnDoRegion (Op);
break;
case PARSEOP_RESOURCETEMPLATE:
+
RsDoResourceTemplate (Op);
break;
@@ -1173,9 +1182,11 @@ OpnGenerateAmlOperands (
case PARSEOP_NAMESTRING:
case PARSEOP_METHODCALL:
case PARSEOP_STRING_LITERAL:
+
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/asloptions.c b/sys/contrib/dev/acpica/compiler/asloptions.c
new file mode 100644
index 0000000..3b4f365
--- /dev/null
+++ b/sys/contrib/dev/acpica/compiler/asloptions.c
@@ -0,0 +1,791 @@
+/******************************************************************************
+ *
+ * Module Name: asloptions - compiler command line processing
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2013, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#include <contrib/dev/acpica/compiler/aslcompiler.h>
+#include <contrib/dev/acpica/include/acapps.h>
+#include <contrib/dev/acpica/include/acdisasm.h>
+
+#define _COMPONENT ACPI_COMPILER
+ ACPI_MODULE_NAME ("asloption")
+
+
+/* Local prototypes */
+
+static int
+AslDoOptions (
+ int argc,
+ char **argv,
+ BOOLEAN IsResponseFile);
+
+static void
+AslMergeOptionTokens (
+ char *InBuffer,
+ char *OutBuffer);
+
+static int
+AslDoResponseFile (
+ char *Filename);
+
+
+#define ASL_TOKEN_SEPARATORS " \t\n"
+#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AslCommandLine
+ *
+ * PARAMETERS: argc/argv
+ *
+ * RETURN: Last argv index
+ *
+ * DESCRIPTION: Command line processing
+ *
+ ******************************************************************************/
+
+int
+AslCommandLine (
+ int argc,
+ char **argv)
+{
+ int BadCommandLine = 0;
+ ACPI_STATUS Status;
+
+
+ /* Minimum command line contains at least the command and an input file */
+
+ if (argc < 2)
+ {
+ printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
+ Usage ();
+ exit (1);
+ }
+
+ /* Process all command line options */
+
+ BadCommandLine = AslDoOptions (argc, argv, FALSE);
+
+ if (Gbl_DoTemplates)
+ {
+ Status = DtCreateTemplates (Gbl_TemplateSignature);
+ if (ACPI_FAILURE (Status))
+ {
+ exit (-1);
+ }
+ exit (1);
+ }
+
+ /* Next parameter must be the input filename */
+
+ if (!argv[AcpiGbl_Optind] &&
+ !Gbl_DisasmFlag &&
+ !Gbl_GetAllTables)
+ {
+ printf ("Missing input filename\n");
+ BadCommandLine = TRUE;
+ }
+
+ if (Gbl_DoSignon)
+ {
+ printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
+ if (Gbl_IgnoreErrors)
+ {
+ printf ("Ignoring all errors, forcing AML file generation\n\n");
+ }
+ }
+
+ if (BadCommandLine)
+ {
+ printf ("\n");
+ Usage ();
+ exit (1);
+ }
+
+ return (AcpiGbl_Optind);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AslDoOptions
+ *
+ * PARAMETERS: argc/argv - Standard argc/argv
+ * IsResponseFile - TRUE if executing a response file.
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Command line option processing
+ *
+ ******************************************************************************/
+
+static int
+AslDoOptions (
+ int argc,
+ char **argv,
+ BOOLEAN IsResponseFile)
+{
+ ACPI_STATUS Status;
+ UINT32 j;
+
+
+ /* Get the command line options */
+
+ while ((j = AcpiGetopt (argc, argv, ASL_SUPPORTED_OPTIONS)) != EOF) switch (j)
+ {
+ case '@': /* Begin a response file */
+
+ if (IsResponseFile)
+ {
+ printf ("Nested command files are not supported\n");
+ return (-1);
+ }
+
+ if (AslDoResponseFile (AcpiGbl_Optarg))
+ {
+ return (-1);
+ }
+ break;
+
+ case 'b': /* Debug output options */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case 'f':
+
+ AslCompilerdebug = 1; /* same as yydebug */
+ DtParserdebug = 1;
+ PrParserdebug = 1;
+ break;
+
+ case 't':
+
+ break;
+
+ default:
+
+ printf ("Unknown option: -b%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+
+ /* Produce debug output file */
+
+ Gbl_DebugFlag = TRUE;
+ break;
+
+ case 'c':
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case 'r':
+
+ Gbl_NoResourceChecking = TRUE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'd': /* Disassembler */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case '^':
+
+ Gbl_DoCompile = FALSE;
+ break;
+
+ case 'a':
+
+ Gbl_DoCompile = FALSE;
+ Gbl_DisassembleAll = TRUE;
+ break;
+
+ case 'b': /* Do not convert buffers to resource descriptors */
+
+ AcpiGbl_NoResourceDisassembly = TRUE;
+ break;
+
+ case 'c':
+
+ break;
+
+ default:
+
+ printf ("Unknown option: -d%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+
+ Gbl_DisasmFlag = TRUE;
+ break;
+
+ case 'D': /* Define a symbol */
+
+ PrAddDefine (AcpiGbl_Optarg, NULL, TRUE);
+ break;
+
+ case 'e': /* External files for disassembler */
+
+ Status = AcpiDmAddToExternalFileList (AcpiGbl_Optarg);
+ if (ACPI_FAILURE (Status))
+ {
+ printf ("Could not add %s to external list\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'f': /* Ignore errors and force creation of aml file */
+
+ Gbl_IgnoreErrors = TRUE;
+ break;
+
+ case 'G':
+
+ Gbl_CompileGeneric = TRUE;
+ break;
+
+ case 'g': /* Get all ACPI tables */
+
+ Gbl_GetAllTables = TRUE;
+ Gbl_DoCompile = FALSE;
+ break;
+
+ case 'h':
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case '^':
+
+ Usage ();
+ exit (0);
+
+ case 'c':
+
+ UtDisplayConstantOpcodes ();
+ exit (0);
+
+ case 'f':
+
+ AslFilenameHelp ();
+ exit (0);
+
+ case 'r':
+
+ /* reserved names */
+
+ ApDisplayReservedNames ();
+ exit (0);
+
+ case 't':
+
+ UtDisplaySupportedTables ();
+ exit (0);
+
+ default:
+
+ printf ("Unknown option: -h%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+
+ case 'I': /* Add an include file search directory */
+
+ FlAddIncludeDirectory (AcpiGbl_Optarg);
+ break;
+
+ case 'i': /* Output AML as an include file */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case 'a':
+
+ /* Produce assembly code include file */
+
+ Gbl_AsmIncludeOutputFlag = TRUE;
+ break;
+
+ case 'c':
+
+ /* Produce C include file */
+
+ Gbl_C_IncludeOutputFlag = TRUE;
+ break;
+
+ case 'n':
+
+ /* Compiler/Disassembler: Ignore the NOOP operator */
+
+ AcpiGbl_IgnoreNoopOperator = TRUE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -i%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'l': /* Listing files */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case '^':
+
+ /* Produce listing file (Mixed source/aml) */
+
+ Gbl_ListingFlag = TRUE;
+ break;
+
+ case 'i':
+
+ /* Produce preprocessor output file */
+
+ Gbl_PreprocessorOutputFlag = TRUE;
+ break;
+
+ case 'n':
+
+ /* Produce namespace file */
+
+ Gbl_NsOutputFlag = TRUE;
+ break;
+
+ case 's':
+
+ /* Produce combined source file */
+
+ Gbl_SourceOutputFlag = TRUE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -l%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'm': /* Set line buffer size */
+
+ Gbl_LineBufferSize = (UINT32) strtoul (AcpiGbl_Optarg, NULL, 0) * 1024;
+ if (Gbl_LineBufferSize < ASL_DEFAULT_LINE_BUFFER_SIZE)
+ {
+ Gbl_LineBufferSize = ASL_DEFAULT_LINE_BUFFER_SIZE;
+ }
+ printf ("Line Buffer Size: %u\n", Gbl_LineBufferSize);
+ break;
+
+ case 'n': /* Parse only */
+
+ Gbl_ParseOnlyFlag = TRUE;
+ break;
+
+ case 'o': /* Control compiler AML optimizations */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case 'a':
+
+ /* Disable all optimizations */
+
+ Gbl_FoldConstants = FALSE;
+ Gbl_IntegerOptimizationFlag = FALSE;
+ Gbl_ReferenceOptimizationFlag = FALSE;
+ break;
+
+ case 'f':
+
+ /* Disable folding on "normal" expressions */
+
+ Gbl_FoldConstants = FALSE;
+ break;
+
+ case 'i':
+
+ /* Disable integer optimization to constants */
+
+ Gbl_IntegerOptimizationFlag = FALSE;
+ break;
+
+ case 'n':
+
+ /* Disable named reference optimization */
+
+ Gbl_ReferenceOptimizationFlag = FALSE;
+ break;
+
+ case 't':
+
+ /* Display compile time(s) */
+
+ Gbl_CompileTimesFlag = TRUE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -c%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'P': /* Preprocessor options */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case '^': /* Proprocess only, emit (.i) file */
+
+ Gbl_PreprocessOnly = TRUE;
+ Gbl_PreprocessorOutputFlag = TRUE;
+ break;
+
+ case 'n': /* Disable preprocessor */
+
+ Gbl_PreprocessFlag = FALSE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -P%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'p': /* Override default AML output filename */
+
+ Gbl_OutputFilenamePrefix = AcpiGbl_Optarg;
+ Gbl_UseDefaultAmlFilename = FALSE;
+ break;
+
+ case 'r': /* Override revision found in table header */
+
+ Gbl_RevisionOverride = (UINT8) strtoul (AcpiGbl_Optarg, NULL, 0);
+ break;
+
+ case 's': /* Create AML in a source code file */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case 'a':
+
+ /* Produce assembly code output file */
+
+ Gbl_AsmOutputFlag = TRUE;
+ break;
+
+ case 'c':
+
+ /* Produce C hex output file */
+
+ Gbl_C_OutputFlag = TRUE;
+ break;
+
+ case 'o':
+
+ /* Produce AML offset table in C */
+
+ Gbl_C_OffsetTableFlag = TRUE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -s%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 't': /* Produce hex table output file */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case 'a':
+
+ Gbl_HexOutputFlag = HEX_OUTPUT_ASM;
+ break;
+
+ case 'c':
+
+ Gbl_HexOutputFlag = HEX_OUTPUT_C;
+ break;
+
+ case 's':
+
+ Gbl_HexOutputFlag = HEX_OUTPUT_ASL;
+ break;
+
+ default:
+
+ printf ("Unknown option: -t%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'T': /* Create a ACPI table template file */
+
+ Gbl_DoTemplates = TRUE;
+ Gbl_TemplateSignature = AcpiGbl_Optarg;
+ break;
+
+ case 'v': /* Version and verbosity settings */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case '^':
+
+ printf (ACPI_COMMON_SIGNON (ASL_COMPILER_NAME));
+ exit (0);
+
+ case 'a':
+
+ /* Disable All error/warning messages */
+
+ Gbl_NoErrors = TRUE;
+ break;
+
+ case 'i':
+ /*
+ * Support for integrated development environment(s).
+ *
+ * 1) No compiler signon
+ * 2) Send stderr messages to stdout
+ * 3) Less verbose error messages (single line only for each)
+ * 4) Error/warning messages are formatted appropriately to
+ * be recognized by MS Visual Studio
+ */
+ Gbl_VerboseErrors = FALSE;
+ Gbl_DoSignon = FALSE;
+ Gbl_Files[ASL_FILE_STDERR].Handle = stdout;
+ break;
+
+ case 'o':
+
+ Gbl_DisplayOptimizations = TRUE;
+ break;
+
+ case 'r':
+
+ Gbl_DisplayRemarks = FALSE;
+ break;
+
+ case 's':
+
+ Gbl_DoSignon = FALSE;
+ break;
+
+ case 't':
+
+ Gbl_VerboseTemplates = TRUE;
+ break;
+
+ case 'w':
+
+ /* Get the required argument */
+
+ if (AcpiGetoptArgument (argc, argv))
+ {
+ return (-1);
+ }
+
+ Status = AslDisableException (AcpiGbl_Optarg);
+ if (ACPI_FAILURE (Status))
+ {
+ return (-1);
+ }
+ break;
+
+ default:
+
+ printf ("Unknown option: -v%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'w': /* Set warning levels */
+
+ switch (AcpiGbl_Optarg[0])
+ {
+ case '1':
+
+ Gbl_WarningLevel = ASL_WARNING;
+ break;
+
+ case '2':
+
+ Gbl_WarningLevel = ASL_WARNING2;
+ break;
+
+ case '3':
+
+ Gbl_WarningLevel = ASL_WARNING3;
+ break;
+
+ case 'e':
+
+ Gbl_WarningsAsErrors = TRUE;
+ break;
+
+ default:
+
+ printf ("Unknown option: -w%s\n", AcpiGbl_Optarg);
+ return (-1);
+ }
+ break;
+
+ case 'x': /* Set debug print output level */
+
+ AcpiDbgLevel = strtoul (AcpiGbl_Optarg, NULL, 16);
+ break;
+
+ case 'z':
+
+ Gbl_UseOriginalCompilerId = TRUE;
+ break;
+
+ default:
+
+ return (-1);
+ }
+
+ return (0);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AslMergeOptionTokens
+ *
+ * PARAMETERS: InBuffer - Input containing an option string
+ * OutBuffer - Merged output buffer
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Remove all whitespace from an option string.
+ *
+ ******************************************************************************/
+
+static void
+AslMergeOptionTokens (
+ char *InBuffer,
+ char *OutBuffer)
+{
+ char *Token;
+
+
+ *OutBuffer = 0;
+
+ Token = strtok (InBuffer, ASL_TOKEN_SEPARATORS);
+ while (Token)
+ {
+ strcat (OutBuffer, Token);
+ Token = strtok (NULL, ASL_TOKEN_SEPARATORS);
+ }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AslDoResponseFile
+ *
+ * PARAMETERS: Filename - Name of the response file
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Open a response file and process all options within.
+ *
+ ******************************************************************************/
+
+static int
+AslDoResponseFile (
+ char *Filename)
+{
+ char *argv = StringBuffer2;
+ FILE *ResponseFile;
+ int OptStatus = 0;
+ int Opterr;
+ int Optind;
+
+
+ ResponseFile = fopen (Filename, "r");
+ if (!ResponseFile)
+ {
+ printf ("Could not open command file %s, %s\n",
+ Filename, strerror (errno));
+ return (-1);
+ }
+
+ /* Must save the current GetOpt globals */
+
+ Opterr = AcpiGbl_Opterr;
+ Optind = AcpiGbl_Optind;
+
+ /*
+ * Process all lines in the response file. There must be one complete
+ * option per line
+ */
+ while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ResponseFile))
+ {
+ /* Compress all tokens, allowing us to use a single argv entry */
+
+ AslMergeOptionTokens (StringBuffer, StringBuffer2);
+
+ /* Process the option */
+
+ AcpiGbl_Opterr = 0;
+ AcpiGbl_Optind = 0;
+
+ OptStatus = AslDoOptions (1, &argv, TRUE);
+ if (OptStatus)
+ {
+ printf ("Invalid option in command file %s: %s\n",
+ Filename, StringBuffer);
+ break;
+ }
+ }
+
+ /* Restore the GetOpt globals */
+
+ AcpiGbl_Opterr = Opterr;
+ AcpiGbl_Optind = Optind;
+
+ fclose (ResponseFile);
+ return (OptStatus);
+}
diff --git a/sys/contrib/dev/acpica/compiler/aslpredef.c b/sys/contrib/dev/acpica/compiler/aslpredef.c
index 47f4015..7f411fb 100644
--- a/sys/contrib/dev/acpica/compiler/aslpredef.c
+++ b/sys/contrib/dev/acpica/compiler/aslpredef.c
@@ -310,7 +310,6 @@ ApCheckPredefinedReturnValue (
break;
default:
-
/*
* All other ops are very difficult or impossible to typecheck at
* compile time. These include all Localx, Argx, and method
@@ -379,6 +378,7 @@ ApCheckForPredefinedObject (
return;
default:
+
break;
}
@@ -624,33 +624,53 @@ ApCheckObjectType (
case PARSEOP_ONE:
case PARSEOP_ONES:
case PARSEOP_INTEGER:
+
ReturnBtype = ACPI_RTYPE_INTEGER;
TypeName = "Integer";
break;
case PARSEOP_STRING_LITERAL:
+
ReturnBtype = ACPI_RTYPE_STRING;
TypeName = "String";
break;
case PARSEOP_BUFFER:
+
ReturnBtype = ACPI_RTYPE_BUFFER;
TypeName = "Buffer";
break;
case PARSEOP_PACKAGE:
case PARSEOP_VAR_PACKAGE:
+
ReturnBtype = ACPI_RTYPE_PACKAGE;
TypeName = "Package";
break;
case PARSEOP_NAMESEG:
case PARSEOP_NAMESTRING:
+ /*
+ * Ignore any named references within a package object.
+ *
+ * For Package objects, references are allowed instead of any of the
+ * standard data types (Integer/String/Buffer/Package). These
+ * references are resolved at runtime. NAMESEG and NAMESTRING are
+ * impossible to typecheck at compile time because the type of
+ * any named object can be changed at runtime (for example,
+ * CopyObject will change the type of the target object).
+ */
+ if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
+ {
+ return (AE_OK);
+ }
+
ReturnBtype = ACPI_RTYPE_REFERENCE;
TypeName = "Reference";
break;
default:
+
/* Not one of the supported object types */
TypeName = UtGetOpName (Op->Asl.ParseOpcode);
diff --git a/sys/contrib/dev/acpica/compiler/aslresource.c b/sys/contrib/dev/acpica/compiler/aslresource.c
index fcb471a..0a95a90 100644
--- a/sys/contrib/dev/acpica/compiler/aslresource.c
+++ b/sys/contrib/dev/acpica/compiler/aslresource.c
@@ -319,6 +319,7 @@ RsLargeAddressCheck (
case ACPI_RESOURCE_FLAG_MIF:
case ACPI_RESOURCE_FLAG_MAF:
default:
+
AslError (ASL_ERROR, ASL_MSG_INVALID_ADDR_FLAGS, LengthOp, NULL);
}
}
@@ -364,6 +365,7 @@ RsLargeAddressCheck (
case (ACPI_RESOURCE_FLAG_MIF | ACPI_RESOURCE_FLAG_MAF):
default:
+
AslError (ASL_ERROR, ASL_MSG_INVALID_ADDR_FLAGS, LengthOp, NULL);
}
}
@@ -655,45 +657,54 @@ RsDoOneResourceDescriptor (
switch (DescriptorTypeOp->Asl.ParseOpcode)
{
case PARSEOP_DMA:
+
Rnode = RsDoDmaDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_FIXEDDMA:
+
Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_DWORDIO:
+
Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_DWORDMEMORY:
+
Rnode = RsDoDwordMemoryDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_DWORDSPACE:
+
Rnode = RsDoDwordSpaceDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_ENDDEPENDENTFN:
+
switch (*State)
{
case ACPI_RSTATE_NORMAL:
+
AslError (ASL_ERROR, ASL_MSG_MISSING_STARTDEPENDENT,
DescriptorTypeOp, NULL);
break;
case ACPI_RSTATE_START_DEPENDENT:
+
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
DescriptorTypeOp, NULL);
break;
case ACPI_RSTATE_DEPENDENT_LIST:
default:
+
break;
}
@@ -703,89 +714,107 @@ RsDoOneResourceDescriptor (
break;
case PARSEOP_ENDTAG:
+
Rnode = RsDoEndTagDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_EXTENDEDIO:
+
Rnode = RsDoExtendedIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_EXTENDEDMEMORY:
+
Rnode = RsDoExtendedMemoryDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_EXTENDEDSPACE:
+
Rnode = RsDoExtendedSpaceDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_FIXEDIO:
+
Rnode = RsDoFixedIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_INTERRUPT:
+
Rnode = RsDoInterruptDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_IO:
+
Rnode = RsDoIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_IRQ:
+
Rnode = RsDoIrqDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_IRQNOFLAGS:
+
Rnode = RsDoIrqNoFlagsDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_MEMORY24:
+
Rnode = RsDoMemory24Descriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_MEMORY32:
+
Rnode = RsDoMemory32Descriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_MEMORY32FIXED:
+
Rnode = RsDoMemory32FixedDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_QWORDIO:
+
Rnode = RsDoQwordIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_QWORDMEMORY:
+
Rnode = RsDoQwordMemoryDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_QWORDSPACE:
+
Rnode = RsDoQwordSpaceDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_REGISTER:
+
Rnode = RsDoGeneralRegisterDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_STARTDEPENDENTFN:
+
switch (*State)
{
case ACPI_RSTATE_START_DEPENDENT:
+
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
DescriptorTypeOp, NULL);
break;
@@ -793,6 +822,7 @@ RsDoOneResourceDescriptor (
case ACPI_RSTATE_NORMAL:
case ACPI_RSTATE_DEPENDENT_LIST:
default:
+
break;
}
@@ -803,9 +833,11 @@ RsDoOneResourceDescriptor (
break;
case PARSEOP_STARTDEPENDENTFN_NOPRI:
+
switch (*State)
{
case ACPI_RSTATE_START_DEPENDENT:
+
AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING,
DescriptorTypeOp, NULL);
break;
@@ -813,6 +845,7 @@ RsDoOneResourceDescriptor (
case ACPI_RSTATE_NORMAL:
case ACPI_RSTATE_DEPENDENT_LIST:
default:
+
break;
}
@@ -823,60 +856,72 @@ RsDoOneResourceDescriptor (
break;
case PARSEOP_VENDORLONG:
+
Rnode = RsDoVendorLargeDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_VENDORSHORT:
+
Rnode = RsDoVendorSmallDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_WORDBUSNUMBER:
+
Rnode = RsDoWordBusNumberDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_WORDIO:
+
Rnode = RsDoWordIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_WORDSPACE:
+
Rnode = RsDoWordSpaceDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_GPIO_INT:
+
Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_GPIO_IO:
+
Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_I2C_SERIALBUS:
+
Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_SPI_SERIALBUS:
+
Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_UART_SERIALBUS:
+
Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp,
CurrentByteOffset);
break;
case PARSEOP_DEFAULT_ARG:
+
/* Just ignore any of these, they are used as fillers/placeholders */
break;
default:
+
printf ("Unknown resource descriptor type [%s]\n",
DescriptorTypeOp->Asl.ParseOpName);
break;
diff --git a/sys/contrib/dev/acpica/compiler/aslrestype1i.c b/sys/contrib/dev/acpica/compiler/aslrestype1i.c
index 3ec92aa..4e78c2c 100644
--- a/sys/contrib/dev/acpica/compiler/aslrestype1i.c
+++ b/sys/contrib/dev/acpica/compiler/aslrestype1i.c
@@ -245,6 +245,7 @@ RsDoFixedDmaDescriptor (
break;
default: /* Ignore any extra nodes */
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslrestype2s.c b/sys/contrib/dev/acpica/compiler/aslrestype2s.c
index 42d51a9..96be2ad 100644
--- a/sys/contrib/dev/acpica/compiler/aslrestype2s.c
+++ b/sys/contrib/dev/acpica/compiler/aslrestype2s.c
@@ -617,7 +617,6 @@ RsDoGpioIoDescriptor (
break;
case 9: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */
-
/*
* Always set the VendorOffset even if there is no Vendor Data.
* This field is required in order to calculate the length
@@ -812,6 +811,7 @@ RsDoI2cSerialBusDescriptor (
break;
default: /* Ignore any extra nodes */
+
break;
}
@@ -986,6 +986,7 @@ RsDoSpiSerialBusDescriptor (
break;
default: /* Ignore any extra nodes */
+
break;
}
@@ -1177,6 +1178,7 @@ RsDoUartSerialBusDescriptor (
break;
default: /* Ignore any extra nodes */
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslstartup.c b/sys/contrib/dev/acpica/compiler/aslstartup.c
index 41a663d..e50b103 100644
--- a/sys/contrib/dev/acpica/compiler/aslstartup.c
+++ b/sys/contrib/dev/acpica/compiler/aslstartup.c
@@ -534,6 +534,7 @@ AslDoOneFile (
return (AE_ERROR);
default:
+
printf ("Unknown file type %X\n", Gbl_FileType);
return (AE_ERROR);
}
diff --git a/sys/contrib/dev/acpica/compiler/aslsupport.l b/sys/contrib/dev/acpica/compiler/aslsupport.l
index 52389ee..e7d2b1f 100644
--- a/sys/contrib/dev/acpica/compiler/aslsupport.l
+++ b/sys/contrib/dev/acpica/compiler/aslsupport.l
@@ -395,16 +395,19 @@ count (
switch (Type)
{
case 2:
+
TotalKeywords++;
TotalNamedObjects++;
break;
case 3:
+
TotalKeywords++;
TotalExecutableOpcodes++;
break;
default:
+
break;
}
@@ -594,6 +597,7 @@ DoCharacter:
goto CompletedString;
default:
+
break;
}
break;
@@ -605,34 +609,42 @@ DoCharacter:
switch (StringChar)
{
case 'a':
+
StringChar = 0x07; /* BELL */
break;
case 'b':
+
StringChar = 0x08; /* BACKSPACE */
break;
case 'f':
+
StringChar = 0x0C; /* FORMFEED */
break;
case 'n':
+
StringChar = 0x0A; /* LINEFEED */
break;
case 'r':
+
StringChar = 0x0D; /* CARRIAGE RETURN*/
break;
case 't':
+
StringChar = 0x09; /* HORIZONTAL TAB */
break;
case 'v':
+
StringChar = 0x0B; /* VERTICAL TAB */
break;
case 'x':
+
State = ASL_HEX_CONSTANT;
i = 0;
continue;
@@ -640,6 +652,7 @@ DoCharacter:
case '\'': /* Single Quote */
case '\"': /* Double Quote */
case '\\': /* Backslash */
+
break;
default:
@@ -709,7 +722,6 @@ DoCharacter:
i++;
continue;
-
case ASL_HEX_CONSTANT:
/* Up to two hex digits allowed */
@@ -755,6 +767,7 @@ DoCharacter:
continue;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/asltransform.c b/sys/contrib/dev/acpica/compiler/asltransform.c
index 7a29446..7e6ad39 100644
--- a/sys/contrib/dev/acpica/compiler/asltransform.c
+++ b/sys/contrib/dev/acpica/compiler/asltransform.c
@@ -299,15 +299,16 @@ TrTransformSubtree (
switch (Op->Asl.ParseOpcode)
{
case PARSEOP_DEFINITIONBLOCK:
+
TrDoDefinitionBlock (Op);
break;
case PARSEOP_SWITCH:
+
TrDoSwitch (Op);
break;
case PARSEOP_METHOD:
-
/*
* TBD: Zero the tempname (_T_x) count. Probably shouldn't be a global,
* however
@@ -316,7 +317,9 @@ TrTransformSubtree (
break;
default:
+
/* Nothing to do here for other opcodes */
+
break;
}
}
@@ -700,18 +703,21 @@ TrDoSwitch (
switch (Btype)
{
case ACPI_BTYPE_INTEGER:
+
NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_ZERO,
(UINT64) 0);
TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
break;
case ACPI_BTYPE_STRING:
+
NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL,
(UINT64) ACPI_TO_INTEGER (""));
TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp);
break;
case ACPI_BTYPE_BUFFER:
+
(void) TrLinkPeerNode (NewOp2, TrCreateValuedLeafNode (PARSEOP_BUFFER,
(UINT64) 0));
Next = NewOp2->Asl.Next;
@@ -728,6 +734,7 @@ TrDoSwitch (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/asltree.c b/sys/contrib/dev/acpica/compiler/asltree.c
index 8fa532b..572a038 100644
--- a/sys/contrib/dev/acpica/compiler/asltree.c
+++ b/sys/contrib/dev/acpica/compiler/asltree.c
@@ -185,20 +185,24 @@ TrUpdateNode (
switch (ParseOpcode)
{
case PARSEOP_BYTECONST:
+
Op->Asl.Value.Integer = ACPI_UINT8_MAX;
break;
case PARSEOP_WORDCONST:
+
Op->Asl.Value.Integer = ACPI_UINT16_MAX;
break;
case PARSEOP_DWORDCONST:
+
Op->Asl.Value.Integer = ACPI_UINT32_MAX;
break;
/* Don't need to do the QWORD case */
default:
+
/* Don't care about others */
break;
}
@@ -214,22 +218,27 @@ TrUpdateNode (
switch (ParseOpcode)
{
case PARSEOP_BYTECONST:
+
UtCheckIntegerRange (Op, 0x00, ACPI_UINT8_MAX);
Op->Asl.Value.Integer &= ACPI_UINT8_MAX;
break;
case PARSEOP_WORDCONST:
+
UtCheckIntegerRange (Op, 0x00, ACPI_UINT16_MAX);
Op->Asl.Value.Integer &= ACPI_UINT16_MAX;
break;
case PARSEOP_DWORDCONST:
+
UtCheckIntegerRange (Op, 0x00, ACPI_UINT32_MAX);
Op->Asl.Value.Integer &= ACPI_UINT32_MAX;
break;
default:
+
/* Don't care about others, don't need to check QWORD */
+
break;
}
@@ -257,54 +266,71 @@ TrGetNodeFlagName (
switch (Flags)
{
case NODE_VISITED:
+
return ("NODE_VISITED");
case NODE_AML_PACKAGE:
+
return ("NODE_AML_PACKAGE");
case NODE_IS_TARGET:
+
return ("NODE_IS_TARGET");
case NODE_IS_RESOURCE_DESC:
+
return ("NODE_IS_RESOURCE_DESC");
case NODE_IS_RESOURCE_FIELD:
+
return ("NODE_IS_RESOURCE_FIELD");
case NODE_HAS_NO_EXIT:
+
return ("NODE_HAS_NO_EXIT");
case NODE_IF_HAS_NO_EXIT:
+
return ("NODE_IF_HAS_NO_EXIT");
case NODE_NAME_INTERNALIZED:
+
return ("NODE_NAME_INTERNALIZED");
case NODE_METHOD_NO_RETVAL:
+
return ("NODE_METHOD_NO_RETVAL");
case NODE_METHOD_SOME_NO_RETVAL:
+
return ("NODE_METHOD_SOME_NO_RETVAL");
case NODE_RESULT_NOT_USED:
+
return ("NODE_RESULT_NOT_USED");
case NODE_METHOD_TYPED:
+
return ("NODE_METHOD_TYPED");
case NODE_COMPILE_TIME_CONST:
+
return ("NODE_COMPILE_TIME_CONST");
case NODE_IS_TERM_ARG:
+
return ("NODE_IS_TERM_ARG");
case NODE_WAS_ONES_OP:
+
return ("NODE_WAS_ONES_OP");
case NODE_IS_NAME_DECLARATION:
+
return ("NODE_IS_NAME_DECLARATION");
default:
+
return ("Multiple Flags (or unknown flag) set");
}
}
@@ -470,11 +496,13 @@ TrCreateConstantLeafNode (
switch (ParseOpcode)
{
case PARSEOP___LINE__:
+
Op = TrAllocateNode (PARSEOP_INTEGER);
Op->Asl.Value.Integer = Op->Asl.LineNumber;
break;
case PARSEOP___PATH__:
+
Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
/* Op.Asl.Filename contains the full pathname to the file */
@@ -483,6 +511,7 @@ TrCreateConstantLeafNode (
break;
case PARSEOP___FILE__:
+
Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
/* Get the simple filename from the full path */
@@ -493,6 +522,7 @@ TrCreateConstantLeafNode (
break;
case PARSEOP___DATE__:
+
Op = TrAllocateNode (PARSEOP_STRING_LITERAL);
/* Get a copy of the current time */
@@ -507,6 +537,7 @@ TrCreateConstantLeafNode (
break;
default: /* This would be an internal error */
+
return (NULL);
}
@@ -551,30 +582,37 @@ TrCreateValuedLeafNode (
switch (ParseOpcode)
{
case PARSEOP_STRING_LITERAL:
+
DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value);
break;
case PARSEOP_NAMESEG:
+
DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value);
break;
case PARSEOP_NAMESTRING:
+
DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value);
break;
case PARSEOP_EISAID:
+
DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value);
break;
case PARSEOP_METHOD:
+
DbgPrint (ASL_PARSE_OUTPUT, "METHOD");
break;
case PARSEOP_INTEGER:
+
DbgPrint (ASL_PARSE_OUTPUT, "INTEGER");
break;
default:
+
break;
}
@@ -628,20 +666,25 @@ TrCreateNode (
switch (ParseOpcode)
{
case PARSEOP_DEFINITIONBLOCK:
+
RootNode = Op;
DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->");
break;
case PARSEOP_OPERATIONREGION:
+
DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->");
break;
case PARSEOP_OR:
+
DbgPrint (ASL_PARSE_OUTPUT, "OR->");
break;
default:
+
/* Nothing to do for other opcodes */
+
break;
}
@@ -746,20 +789,25 @@ TrLinkChildren (
switch (Op->Asl.ParseOpcode)
{
case PARSEOP_DEFINITIONBLOCK:
+
RootNode = Op;
DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->");
break;
case PARSEOP_OPERATIONREGION:
+
DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->");
break;
case PARSEOP_OR:
+
DbgPrint (ASL_PARSE_OUTPUT, "OR->");
break;
default:
+
/* Nothing to do for other opcodes */
+
break;
}
@@ -1106,7 +1154,6 @@ TrWalkParseTree (
}
break;
-
case ASL_WALK_VISIT_UPWARD:
while (Op)
@@ -1161,7 +1208,6 @@ TrWalkParseTree (
}
break;
-
case ASL_WALK_VISIT_TWICE:
while (Op)
diff --git a/sys/contrib/dev/acpica/compiler/asltypes.h b/sys/contrib/dev/acpica/compiler/asltypes.h
index 6f2fb88..5ca17b3 100644
--- a/sys/contrib/dev/acpica/compiler/asltypes.h
+++ b/sys/contrib/dev/acpica/compiler/asltypes.h
@@ -81,16 +81,17 @@
typedef struct asl_method_info
{
- UINT8 NumArguments;
- UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS];
- UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS];
+ ACPI_PARSE_OBJECT *Op;
+ struct asl_method_info *Next;
UINT32 ValidArgTypes[ACPI_METHOD_NUM_ARGS];
UINT32 ValidReturnTypes;
UINT32 NumReturnNoValue;
UINT32 NumReturnWithValue;
- ACPI_PARSE_OBJECT *Op;
- struct asl_method_info *Next;
+ UINT8 NumArguments;
+ UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS];
+ UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS];
UINT8 HasBeenTyped;
+ UINT8 ShouldBeSerialized;
} ASL_METHOD_INFO;
diff --git a/sys/contrib/dev/acpica/compiler/aslutils.c b/sys/contrib/dev/acpica/compiler/aslutils.c
index 1a4a27d..4353fac 100644
--- a/sys/contrib/dev/acpica/compiler/aslutils.c
+++ b/sys/contrib/dev/acpica/compiler/aslutils.c
@@ -956,6 +956,7 @@ UtStrtoul64 (
case 8:
case 10:
case 16:
+
break;
default:
@@ -1090,19 +1091,24 @@ ErrorExit:
switch (Base)
{
case 8:
+
Status = AE_BAD_OCTAL_CONSTANT;
break;
case 10:
+
Status = AE_BAD_DECIMAL_CONSTANT;
break;
case 16:
+
Status = AE_BAD_HEX_CONSTANT;
break;
default:
+
/* Base validated above */
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslwalks.c b/sys/contrib/dev/acpica/compiler/aslwalks.c
index 144746b..7dfa7af 100644
--- a/sys/contrib/dev/acpica/compiler/aslwalks.c
+++ b/sys/contrib/dev/acpica/compiler/aslwalks.c
@@ -122,6 +122,7 @@ AnMethodTypingWalkEnd (
break;
default:
+
break;
}
@@ -176,6 +177,7 @@ AnOperandTypecheckWalkEnd (
return (AE_OK);
default:
+
break;
}
@@ -252,6 +254,7 @@ AnOperandTypecheckWalkEnd (
return (AE_OK);
default:
+
break;
}
@@ -379,11 +382,13 @@ AnOperandTypecheckWalkEnd (
break;
case PARSEOP_DEBUG:
+
break;
case PARSEOP_REFOF:
case PARSEOP_INDEX:
default:
+
break;
}
@@ -391,6 +396,7 @@ AnOperandTypecheckWalkEnd (
case ARGI_INTEGER:
default:
+
break;
}
@@ -434,6 +440,7 @@ AnOperandTypecheckWalkEnd (
break;
default:
+
break;
}
@@ -520,9 +527,11 @@ AnOtherSemanticAnalysisWalkBegin (
case PARSEOP_ACQUIRE:
case PARSEOP_WAIT:
case PARSEOP_LOADTABLE:
+
break;
default:
+
AslError (ASL_ERROR, ASL_MSG_RESULT_NOT_USED,
Op, Op->Asl.ExternalName);
break;
@@ -661,6 +670,7 @@ AnOtherSemanticAnalysisWalkBegin (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/aslxref.c b/sys/contrib/dev/acpica/compiler/aslxref.c
index 188c214..51addc3 100644
--- a/sys/contrib/dev/acpica/compiler/aslxref.c
+++ b/sys/contrib/dev/acpica/compiler/aslxref.c
@@ -533,27 +533,33 @@ XfNamespaceLocateBegin (
break;
case AML_CREATE_BIT_FIELD_OP:
+
FieldBitLength = 1;
break;
case AML_CREATE_BYTE_FIELD_OP:
case AML_INDEX_OP:
+
FieldBitLength = 8;
break;
case AML_CREATE_WORD_FIELD_OP:
+
FieldBitLength = 16;
break;
case AML_CREATE_DWORD_FIELD_OP:
+
FieldBitLength = 32;
break;
case AML_CREATE_QWORD_FIELD_OP:
+
FieldBitLength = 64;
break;
default:
+
FieldBitLength = 0;
break;
}
@@ -595,6 +601,7 @@ XfNamespaceLocateBegin (
break;
default:
+
break;
}
@@ -728,18 +735,22 @@ XfNamespaceLocateBegin (
case AML_FIELD_ACCESS_BYTE:
case AML_FIELD_ACCESS_BUFFER:
default:
+
MinimumLength = 1;
break;
case AML_FIELD_ACCESS_WORD:
+
MinimumLength = 2;
break;
case AML_FIELD_ACCESS_DWORD:
+
MinimumLength = 4;
break;
case AML_FIELD_ACCESS_QWORD:
+
MinimumLength = 8;
break;
}
@@ -784,6 +795,7 @@ XfNamespaceLocateBegin (
default:
/* Nothing to do for other address spaces */
+
break;
}
}
diff --git a/sys/contrib/dev/acpica/compiler/dtexpress.c b/sys/contrib/dev/acpica/compiler/dtexpress.c
index 1c6ed3f..9689ef6 100644
--- a/sys/contrib/dev/acpica/compiler/dtexpress.c
+++ b/sys/contrib/dev/acpica/compiler/dtexpress.c
@@ -127,18 +127,22 @@ DtDoOperator (
switch (Operator)
{
case EXPOP_ONES_COMPLIMENT:
+
Result = ~RightValue;
break;
case EXPOP_LOGICAL_NOT:
+
Result = !RightValue;
break;
case EXPOP_MULTIPLY:
+
Result = LeftValue * RightValue;
break;
case EXPOP_DIVIDE:
+
if (!RightValue)
{
DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
@@ -149,6 +153,7 @@ DtDoOperator (
break;
case EXPOP_MODULO:
+
if (!RightValue)
{
DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO,
@@ -163,58 +168,72 @@ DtDoOperator (
break;
case EXPOP_SUBTRACT:
+
Result = LeftValue - RightValue;
break;
case EXPOP_SHIFT_RIGHT:
+
Result = LeftValue >> RightValue;
break;
case EXPOP_SHIFT_LEFT:
+
Result = LeftValue << RightValue;
break;
case EXPOP_LESS:
+
Result = LeftValue < RightValue;
break;
case EXPOP_GREATER:
+
Result = LeftValue > RightValue;
break;
case EXPOP_LESS_EQUAL:
+
Result = LeftValue <= RightValue;
break;
case EXPOP_GREATER_EQUAL:
+
Result = LeftValue >= RightValue;
break;
case EXPOP_EQUAL:
+
Result = LeftValue == RightValue;
break;
case EXPOP_NOT_EQUAL:
+
Result = LeftValue != RightValue;
break;
case EXPOP_AND:
+
Result = LeftValue & RightValue;
break;
case EXPOP_XOR:
+
Result = LeftValue ^ RightValue;
break;
case EXPOP_OR:
+
Result = LeftValue | RightValue;
break;
case EXPOP_LOGICAL_AND:
+
Result = LeftValue && RightValue;
break;
case EXPOP_LOGICAL_OR:
+
Result = LeftValue || RightValue;
break;
diff --git a/sys/contrib/dev/acpica/compiler/dtfield.c b/sys/contrib/dev/acpica/compiler/dtfield.c
index 11e443e..7f77665 100644
--- a/sys/contrib/dev/acpica/compiler/dtfield.c
+++ b/sys/contrib/dev/acpica/compiler/dtfield.c
@@ -104,14 +104,17 @@ DtCompileOneField (
switch (Type)
{
case DT_FIELD_TYPE_INTEGER:
+
DtCompileInteger (Buffer, Field, ByteLength, Flags);
break;
case DT_FIELD_TYPE_STRING:
+
DtCompileString (Buffer, Field, ByteLength);
break;
case DT_FIELD_TYPE_UUID:
+
Status = DtCompileUuid (Buffer, Field, ByteLength);
if (ACPI_SUCCESS (Status))
{
@@ -121,17 +124,21 @@ DtCompileOneField (
/* Fall through. */
case DT_FIELD_TYPE_BUFFER:
+
DtCompileBuffer (Buffer, Field->Value, Field, ByteLength);
break;
case DT_FIELD_TYPE_UNICODE:
+
DtCompileUnicode (Buffer, Field, ByteLength);
break;
case DT_FIELD_TYPE_DEVICE_PATH:
+
break;
default:
+
DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid field type");
break;
}
@@ -382,10 +389,12 @@ DtNormalizeBuffer (
case ']':
case ' ':
case ',':
+
Separator = TRUE;
break;
default:
+
if (Separator)
{
/* Insert blank as the standard separator */
diff --git a/sys/contrib/dev/acpica/compiler/dtio.c b/sys/contrib/dev/acpica/compiler/dtio.c
index f3d5359..1495e96 100644
--- a/sys/contrib/dev/acpica/compiler/dtio.c
+++ b/sys/contrib/dev/acpica/compiler/dtio.c
@@ -426,7 +426,7 @@ DtGetNextLine (
UINT32 State = DT_NORMAL_TEXT;
UINT32 CurrentLineOffset;
UINT32 i;
- char c;
+ int c;
for (i = 0; ;)
@@ -440,7 +440,7 @@ DtGetNextLine (
UtExpandLineBuffers ();
}
- c = (char) getc (Handle);
+ c = getc (Handle);
if (c == EOF)
{
switch (State)
@@ -452,6 +452,7 @@ DtGetNextLine (
break;
default:
+
break;
}
@@ -479,14 +480,16 @@ DtGetNextLine (
/* Normal text, insert char into line buffer */
- Gbl_CurrentLineBuffer[i] = c;
+ Gbl_CurrentLineBuffer[i] = (char) c;
switch (c)
{
case '/':
+
State = DT_START_COMMENT;
break;
case '"':
+
State = DT_START_QUOTED_STRING;
LineNotAllBlanks = TRUE;
i++;
@@ -501,6 +504,7 @@ DtGetNextLine (
break;
case '\n':
+
CurrentLineOffset = Gbl_NextLineOffset;
Gbl_NextLineOffset = (UINT32) ftell (Handle);
Gbl_CurrentLineNumber++;
@@ -527,6 +531,7 @@ DtGetNextLine (
break;
default:
+
if (c != ' ')
{
LineNotAllBlanks = TRUE;
@@ -541,26 +546,30 @@ DtGetNextLine (
/* Insert raw chars until end of quoted string */
- Gbl_CurrentLineBuffer[i] = c;
+ Gbl_CurrentLineBuffer[i] = (char) c;
i++;
switch (c)
{
case '"':
+
State = DT_NORMAL_TEXT;
break;
case '\\':
+
State = DT_ESCAPE_SEQUENCE;
break;
case '\n':
+
AcpiOsPrintf ("ERROR at line %u: Unterminated quoted string\n",
Gbl_CurrentLineNumber++);
State = DT_NORMAL_TEXT;
break;
default: /* Get next character */
+
break;
}
break;
@@ -569,7 +578,7 @@ DtGetNextLine (
/* Just copy the escaped character. TBD: sufficient for table compiler? */
- Gbl_CurrentLineBuffer[i] = c;
+ Gbl_CurrentLineBuffer[i] = (char) c;
i++;
State = DT_START_QUOTED_STRING;
break;
@@ -581,21 +590,24 @@ DtGetNextLine (
switch (c)
{
case '*':
+
State = DT_SLASH_ASTERISK_COMMENT;
break;
case '/':
+
State = DT_SLASH_SLASH_COMMENT;
break;
default: /* Not a comment */
+
i++; /* Save the preceding slash */
if (i >= Gbl_LineBufferSize)
{
UtExpandLineBuffers ();
}
- Gbl_CurrentLineBuffer[i] = c;
+ Gbl_CurrentLineBuffer[i] = (char) c;
i++;
State = DT_NORMAL_TEXT;
break;
@@ -609,15 +621,18 @@ DtGetNextLine (
switch (c)
{
case '\n':
+
Gbl_NextLineOffset = (UINT32) ftell (Handle);
Gbl_CurrentLineNumber++;
break;
case '*':
+
State = DT_END_COMMENT;
break;
default:
+
break;
}
break;
@@ -642,20 +657,24 @@ DtGetNextLine (
switch (c)
{
case '/':
+
State = DT_NORMAL_TEXT;
break;
case '\n':
+
CurrentLineOffset = Gbl_NextLineOffset;
Gbl_NextLineOffset = (UINT32) ftell (Handle);
Gbl_CurrentLineNumber++;
break;
case '*':
+
/* Consume all adjacent asterisks */
break;
default:
+
State = DT_SLASH_ASTERISK_COMMENT;
break;
}
@@ -694,6 +713,7 @@ DtGetNextLine (
break;
default:
+
DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, "Unknown input state");
return (ASL_EOF);
}
diff --git a/sys/contrib/dev/acpica/compiler/dtsubtable.c b/sys/contrib/dev/acpica/compiler/dtsubtable.c
index df22710..67fcb9d 100644
--- a/sys/contrib/dev/acpica/compiler/dtsubtable.c
+++ b/sys/contrib/dev/acpica/compiler/dtsubtable.c
@@ -312,14 +312,17 @@ DtGetSubtableLength (
switch (Info->Opcode)
{
case ACPI_DMT_GAS:
+
Step = 5;
break;
case ACPI_DMT_HESTNTFY:
+
Step = 9;
break;
default:
+
Step = 1;
break;
}
diff --git a/sys/contrib/dev/acpica/compiler/dttable.c b/sys/contrib/dev/acpica/compiler/dttable.c
index cd6a35f..fe15822 100644
--- a/sys/contrib/dev/acpica/compiler/dttable.c
+++ b/sys/contrib/dev/acpica/compiler/dttable.c
@@ -280,26 +280,32 @@ DtCompileAsf (
switch (AsfTable->Header.Type & 0x7F) /* Mask off top bit */
{
case ACPI_ASF_TYPE_INFO:
+
InfoTable = AcpiDmTableInfoAsf0;
break;
case ACPI_ASF_TYPE_ALERT:
+
InfoTable = AcpiDmTableInfoAsf1;
break;
case ACPI_ASF_TYPE_CONTROL:
+
InfoTable = AcpiDmTableInfoAsf2;
break;
case ACPI_ASF_TYPE_BOOT:
+
InfoTable = AcpiDmTableInfoAsf3;
break;
case ACPI_ASF_TYPE_ADDRESS:
+
InfoTable = AcpiDmTableInfoAsf4;
break;
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASF!");
return (AE_ERROR);
}
@@ -316,10 +322,12 @@ DtCompileAsf (
switch (AsfTable->Header.Type & 0x7F) /* Mask off top bit */
{
case ACPI_ASF_TYPE_INFO:
+
DataInfoTable = NULL;
break;
case ACPI_ASF_TYPE_ALERT:
+
DataInfoTable = AcpiDmTableInfoAsf1a;
DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT,
ACPI_SUB_PTR (UINT8, Subtable->Buffer,
@@ -327,6 +335,7 @@ DtCompileAsf (
break;
case ACPI_ASF_TYPE_CONTROL:
+
DataInfoTable = AcpiDmTableInfoAsf2a;
DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE,
ACPI_SUB_PTR (UINT8, Subtable->Buffer,
@@ -334,10 +343,12 @@ DtCompileAsf (
break;
case ACPI_ASF_TYPE_BOOT:
+
DataInfoTable = NULL;
break;
case ACPI_ASF_TYPE_ADDRESS:
+
DataInfoTable = TableInfoAsfAddress;
DataCount = ACPI_CAST_PTR (ACPI_ASF_ADDRESS,
ACPI_SUB_PTR (UINT8, Subtable->Buffer,
@@ -345,6 +356,7 @@ DtCompileAsf (
break;
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASF!");
return (AE_ERROR);
}
@@ -574,18 +586,27 @@ DtCompileDmar (
switch (DmarHeader->Type)
{
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
+
InfoTable = AcpiDmTableInfoDmar0;
break;
+
case ACPI_DMAR_TYPE_RESERVED_MEMORY:
+
InfoTable = AcpiDmTableInfoDmar1;
break;
+
case ACPI_DMAR_TYPE_ATSR:
+
InfoTable = AcpiDmTableInfoDmar2;
break;
+
case ACPI_DMAR_HARDWARE_AFFINITY:
+
InfoTable = AcpiDmTableInfoDmar3;
break;
+
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "DMAR");
return (AE_ERROR);
}
@@ -810,14 +831,17 @@ DtCompileFpdt (
switch (FpdtHeader->Type)
{
case ACPI_FPDT_TYPE_BOOT:
+
InfoTable = AcpiDmTableInfoFpdt0;
break;
case ACPI_FPDT_TYPE_S3PERF:
+
InfoTable = AcpiDmTableInfoFpdt1;
break;
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "FPDT");
return (AE_ERROR);
break;
@@ -884,34 +908,42 @@ DtCompileHest (
switch (Type)
{
case ACPI_HEST_TYPE_IA32_CHECK:
+
InfoTable = AcpiDmTableInfoHest0;
break;
case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
+
InfoTable = AcpiDmTableInfoHest1;
break;
case ACPI_HEST_TYPE_IA32_NMI:
+
InfoTable = AcpiDmTableInfoHest2;
break;
case ACPI_HEST_TYPE_AER_ROOT_PORT:
+
InfoTable = AcpiDmTableInfoHest6;
break;
case ACPI_HEST_TYPE_AER_ENDPOINT:
+
InfoTable = AcpiDmTableInfoHest7;
break;
case ACPI_HEST_TYPE_AER_BRIDGE:
+
InfoTable = AcpiDmTableInfoHest8;
break;
case ACPI_HEST_TYPE_GENERIC_ERROR:
+
InfoTable = AcpiDmTableInfoHest9;
break;
default:
+
/* Cannot continue on unknown type */
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "HEST");
@@ -933,16 +965,19 @@ DtCompileHest (
switch (Type)
{
case ACPI_HEST_TYPE_IA32_CHECK:
+
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK,
Subtable->Buffer))->NumHardwareBanks;
break;
case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK:
+
BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED,
Subtable->Buffer))->NumHardwareBanks;
break;
default:
+
break;
}
@@ -1019,16 +1054,19 @@ DtCompileIvrs (
switch (IvrsHeader->Type)
{
case ACPI_IVRS_TYPE_HARDWARE:
+
InfoTable = AcpiDmTableInfoIvrs0;
break;
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
+
InfoTable = AcpiDmTableInfoIvrs1;
break;
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS");
return (AE_ERROR);
}
@@ -1088,6 +1126,7 @@ DtCompileIvrs (
break;
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart,
"IVRS Device Entry");
return (AE_ERROR);
@@ -1165,45 +1204,72 @@ DtCompileMadt (
switch (MadtHeader->Type)
{
case ACPI_MADT_TYPE_LOCAL_APIC:
+
InfoTable = AcpiDmTableInfoMadt0;
break;
+
case ACPI_MADT_TYPE_IO_APIC:
+
InfoTable = AcpiDmTableInfoMadt1;
break;
+
case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE:
+
InfoTable = AcpiDmTableInfoMadt2;
break;
+
case ACPI_MADT_TYPE_NMI_SOURCE:
+
InfoTable = AcpiDmTableInfoMadt3;
break;
+
case ACPI_MADT_TYPE_LOCAL_APIC_NMI:
+
InfoTable = AcpiDmTableInfoMadt4;
break;
+
case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE:
+
InfoTable = AcpiDmTableInfoMadt5;
break;
+
case ACPI_MADT_TYPE_IO_SAPIC:
+
InfoTable = AcpiDmTableInfoMadt6;
break;
+
case ACPI_MADT_TYPE_LOCAL_SAPIC:
+
InfoTable = AcpiDmTableInfoMadt7;
break;
+
case ACPI_MADT_TYPE_INTERRUPT_SOURCE:
+
InfoTable = AcpiDmTableInfoMadt8;
break;
+
case ACPI_MADT_TYPE_LOCAL_X2APIC:
+
InfoTable = AcpiDmTableInfoMadt9;
break;
+
case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI:
+
InfoTable = AcpiDmTableInfoMadt10;
break;
+
case ACPI_MADT_TYPE_GENERIC_INTERRUPT:
+
InfoTable = AcpiDmTableInfoMadt11;
break;
+
case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR:
+
InfoTable = AcpiDmTableInfoMadt12;
break;
+
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT");
return (AE_ERROR);
}
@@ -1665,14 +1731,17 @@ DtCompileS3pt (
switch (S3ptHeader->Type)
{
case ACPI_S3PT_TYPE_RESUME:
+
InfoTable = AcpiDmTableInfoS3pt0;
break;
case ACPI_S3PT_TYPE_SUSPEND:
+
InfoTable = AcpiDmTableInfoS3pt1;
break;
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "S3PT");
return (AE_ERROR);
}
@@ -1736,12 +1805,17 @@ DtCompileSlic (
switch (SlicHeader->Type)
{
case ACPI_SLIC_TYPE_PUBLIC_KEY:
+
InfoTable = AcpiDmTableInfoSlic0;
break;
+
case ACPI_SLIC_TYPE_WINDOWS_MARKER:
+
InfoTable = AcpiDmTableInfoSlic1;
break;
+
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SLIC");
return (AE_ERROR);
}
@@ -1871,15 +1945,22 @@ DtCompileSrat (
switch (SratHeader->Type)
{
case ACPI_SRAT_TYPE_CPU_AFFINITY:
+
InfoTable = AcpiDmTableInfoSrat0;
break;
+
case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
+
InfoTable = AcpiDmTableInfoSrat1;
break;
+
case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
+
InfoTable = AcpiDmTableInfoSrat2;
break;
+
default:
+
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
return (AE_ERROR);
}
diff --git a/sys/contrib/dev/acpica/compiler/dtutils.c b/sys/contrib/dev/acpica/compiler/dtutils.c
index 80b0e44..a348c0f 100644
--- a/sys/contrib/dev/acpica/compiler/dtutils.c
+++ b/sys/contrib/dev/acpica/compiler/dtutils.c
@@ -82,18 +82,11 @@ DtError (
char *ExtraMessage)
{
- switch (Level)
- {
- case ASL_WARNING2:
- case ASL_WARNING3:
- if (Gbl_WarningLevel < Level)
- {
- return;
- }
- break;
+ /* Check if user wants to ignore this exception */
- default:
- break;
+ if (AslIsExceptionDisabled (Level, MessageId))
+ {
+ return;
}
if (FieldObject)
@@ -140,6 +133,7 @@ DtNameError (
{
case ASL_WARNING2:
case ASL_WARNING3:
+
if (Gbl_WarningLevel < Level)
{
return;
@@ -147,6 +141,7 @@ DtNameError (
break;
default:
+
break;
}
@@ -387,6 +382,7 @@ DtGetFieldType (
case ACPI_DMT_FLAGS1:
case ACPI_DMT_FLAGS2:
case ACPI_DMT_FLAGS4:
+
Type = DT_FIELD_TYPE_FLAG;
break;
@@ -395,6 +391,7 @@ DtGetFieldType (
case ACPI_DMT_NAME6:
case ACPI_DMT_NAME8:
case ACPI_DMT_STRING:
+
Type = DT_FIELD_TYPE_STRING;
break;
@@ -403,31 +400,38 @@ DtGetFieldType (
case ACPI_DMT_BUF16:
case ACPI_DMT_BUF128:
case ACPI_DMT_PCI_PATH:
+
Type = DT_FIELD_TYPE_BUFFER;
break;
case ACPI_DMT_GAS:
case ACPI_DMT_HESTNTFY:
+
Type = DT_FIELD_TYPE_INLINE_SUBTABLE;
break;
case ACPI_DMT_UNICODE:
+
Type = DT_FIELD_TYPE_UNICODE;
break;
case ACPI_DMT_UUID:
+
Type = DT_FIELD_TYPE_UUID;
break;
case ACPI_DMT_DEVICE_PATH:
+
Type = DT_FIELD_TYPE_DEVICE_PATH;
break;
case ACPI_DMT_LABEL:
+
Type = DT_FIELD_TYPE_LABEL;
break;
default:
+
Type = DT_FIELD_TYPE_INTEGER;
break;
}
@@ -517,6 +521,7 @@ DtGetFieldLength (
case ACPI_DMT_FLAGS4:
case ACPI_DMT_LABEL:
case ACPI_DMT_EXTRA_TEXT:
+
ByteLength = 0;
break;
@@ -535,6 +540,7 @@ DtGetFieldLength (
case ACPI_DMT_EINJINST:
case ACPI_DMT_ERSTACT:
case ACPI_DMT_ERSTINST:
+
ByteLength = 1;
break;
@@ -542,10 +548,12 @@ DtGetFieldLength (
case ACPI_DMT_DMAR:
case ACPI_DMT_HEST:
case ACPI_DMT_PCI_PATH:
+
ByteLength = 2;
break;
case ACPI_DMT_UINT24:
+
ByteLength = 3;
break;
@@ -553,29 +561,35 @@ DtGetFieldLength (
case ACPI_DMT_NAME4:
case ACPI_DMT_SLIC:
case ACPI_DMT_SIG:
+
ByteLength = 4;
break;
case ACPI_DMT_UINT40:
+
ByteLength = 5;
break;
case ACPI_DMT_UINT48:
case ACPI_DMT_NAME6:
+
ByteLength = 6;
break;
case ACPI_DMT_UINT56:
case ACPI_DMT_BUF7:
+
ByteLength = 7;
break;
case ACPI_DMT_UINT64:
case ACPI_DMT_NAME8:
+
ByteLength = 8;
break;
case ACPI_DMT_STRING:
+
Value = DtGetFieldValue (Field);
if (Value)
{
@@ -591,14 +605,17 @@ DtGetFieldLength (
break;
case ACPI_DMT_GAS:
+
ByteLength = sizeof (ACPI_GENERIC_ADDRESS);
break;
case ACPI_DMT_HESTNTFY:
+
ByteLength = sizeof (ACPI_HEST_NOTIFY);
break;
case ACPI_DMT_BUFFER:
+
Value = DtGetFieldValue (Field);
if (Value)
{
@@ -615,14 +632,17 @@ DtGetFieldLength (
case ACPI_DMT_BUF16:
case ACPI_DMT_UUID:
+
ByteLength = 16;
break;
case ACPI_DMT_BUF128:
+
ByteLength = 128;
break;
case ACPI_DMT_UNICODE:
+
Value = DtGetFieldValue (Field);
/* TBD: error if Value is NULL? (as below?) */
@@ -631,6 +651,7 @@ DtGetFieldLength (
break;
default:
+
DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid table opcode");
return (0);
}
diff --git a/sys/contrib/dev/acpica/compiler/prscan.c b/sys/contrib/dev/acpica/compiler/prscan.c
index 0d44d6a..dad91bd 100644
--- a/sys/contrib/dev/acpica/compiler/prscan.c
+++ b/sys/contrib/dev/acpica/compiler/prscan.c
@@ -477,6 +477,7 @@ PrDoDirective (
switch (Directive)
{
case PR_DIRECTIVE_ELIF:
+
*IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock);
if (*IgnoringThisCodeBlock == TRUE)
{
@@ -493,10 +494,12 @@ PrDoDirective (
break;
case PR_DIRECTIVE_ELSE:
+
*IgnoringThisCodeBlock = !(*IgnoringThisCodeBlock);
return;
case PR_DIRECTIVE_ENDIF:
+
*IgnoringThisCodeBlock = FALSE;
Gbl_IfDepth--;
if (Gbl_IfDepth < 0)
@@ -508,6 +511,7 @@ PrDoDirective (
return;
default:
+
break;
}
@@ -590,6 +594,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_ERROR:
+
/* TBD compiler should abort */
/* Note: No macro expansion */
@@ -598,6 +603,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_IF:
+
TokenOffset = Token - Gbl_MainTokenBuffer;
/* Need to expand #define macros in the expression string first */
@@ -623,6 +629,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_IFDEF:
+
if (!PrMatchDefine (Token))
{
*IgnoringThisCodeBlock = TRUE;
@@ -635,6 +642,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_IFNDEF:
+
if (PrMatchDefine (Token))
{
*IgnoringThisCodeBlock = TRUE;
@@ -647,6 +655,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_INCLUDE:
+
Token = PrGetNextToken (NULL, " \"<>", Next);
if (!Token)
{
@@ -661,6 +670,7 @@ PrDoDirective (
break;
case PR_DIRECTIVE_LINE:
+
TokenOffset = Token - Gbl_MainTokenBuffer;
Status = PrResolveIntegerExpression (
@@ -686,26 +696,40 @@ PrDoDirective (
break;
case PR_DIRECTIVE_PRAGMA:
- /* Only "#pragma message" supported at this time */
- if (strcmp (Token, "message"))
+ if (!strcmp (Token, "disable"))
{
- PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA,
- THIS_TOKEN_OFFSET (Token));
- return;
+ Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
+ if (!Token)
+ {
+ goto SyntaxError;
+ }
+
+ TokenOffset = Token - Gbl_MainTokenBuffer;
+ AslDisableException (&Gbl_CurrentLineBuffer[TokenOffset]);
}
+ else if (!strcmp (Token, "message"))
+ {
+ Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
+ if (!Token)
+ {
+ goto SyntaxError;
+ }
- Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next);
- if (!Token)
+ TokenOffset = Token - Gbl_MainTokenBuffer;
+ AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]);
+ }
+ else
{
- goto SyntaxError;
+ PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA,
+ THIS_TOKEN_OFFSET (Token));
+ return;
}
- TokenOffset = Token - Gbl_MainTokenBuffer;
- AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]);
break;
case PR_DIRECTIVE_UNDEF:
+
DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
"#undef: %s\n", Gbl_CurrentLineNumber, Token);
@@ -713,11 +737,13 @@ PrDoDirective (
break;
case PR_DIRECTIVE_WARNING:
+
PrError (ASL_WARNING, ASL_MSG_ERROR_DIRECTIVE,
THIS_TOKEN_OFFSET (Token));
break;
default:
+
/* Should never get here */
DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
"Unrecognized directive: %u\n",
diff --git a/sys/contrib/dev/acpica/components/debugger/dbcmds.c b/sys/contrib/dev/acpica/components/debugger/dbcmds.c
index 290b164..3f23d3e 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbcmds.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbcmds.c
@@ -361,22 +361,27 @@ AcpiDbDisplayTableInfo (
switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK)
{
case ACPI_TABLE_ORIGIN_UNKNOWN:
+
AcpiOsPrintf ("Unknown ");
break;
case ACPI_TABLE_ORIGIN_MAPPED:
+
AcpiOsPrintf ("Mapped ");
break;
case ACPI_TABLE_ORIGIN_ALLOCATED:
+
AcpiOsPrintf ("Allocated ");
break;
case ACPI_TABLE_ORIGIN_OVERRIDE:
+
AcpiOsPrintf ("Override ");
break;
default:
+
AcpiOsPrintf ("INVALID ");
break;
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbconvert.c b/sys/contrib/dev/acpica/components/debugger/dbconvert.c
index f781f29..6daa753 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbconvert.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbconvert.c
@@ -304,20 +304,24 @@ AcpiDbConvertToObject (
switch (Type)
{
case ACPI_TYPE_STRING:
+
Object->Type = ACPI_TYPE_STRING;
Object->String.Pointer = String;
Object->String.Length = (UINT32) ACPI_STRLEN (String);
break;
case ACPI_TYPE_BUFFER:
+
Status = AcpiDbConvertToBuffer (String, Object);
break;
case ACPI_TYPE_PACKAGE:
+
Status = AcpiDbConvertToPackage (String, Object);
break;
default:
+
Object->Type = ACPI_TYPE_INTEGER;
Status = AcpiUtStrtoul64 (String, 16, &Object->Integer.Value);
break;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbdisply.c b/sys/contrib/dev/acpica/components/debugger/dbdisply.c
index 649b328..673dccc 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbdisply.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbdisply.c
@@ -265,7 +265,6 @@ AcpiDbDecodeAndDisplayObject (
Node = ObjPtr;
goto DumpNode;
-
case ACPI_DESC_TYPE_OPERAND:
/* This is a ACPI OPERAND OBJECT */
@@ -282,7 +281,6 @@ AcpiDbDecodeAndDisplayObject (
AcpiExDumpObjectDescriptor (ObjPtr, 1);
break;
-
case ACPI_DESC_TYPE_PARSER:
/* This is a Parser Op object */
@@ -299,7 +297,6 @@ AcpiDbDecodeAndDisplayObject (
AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr);
break;
-
default:
/* Is not a recognizeable object */
@@ -446,6 +443,7 @@ AcpiDbDisplayMethodInfo (
switch (OpInfo->Class)
{
case AML_CLASS_ARGUMENT:
+
if (CountRemaining)
{
NumRemainingOperands++;
@@ -455,11 +453,13 @@ AcpiDbDisplayMethodInfo (
break;
case AML_CLASS_UNKNOWN:
+
/* Bad opcode or ASCII character */
continue;
default:
+
if (CountRemaining)
{
NumRemainingOperators++;
@@ -931,15 +931,21 @@ AcpiDbDisplayGpes (
switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK)
{
case ACPI_GPE_DISPATCH_NONE:
+
AcpiOsPrintf ("NotUsed");
break;
+
case ACPI_GPE_DISPATCH_METHOD:
+
AcpiOsPrintf ("Method");
break;
case ACPI_GPE_DISPATCH_HANDLER:
+
AcpiOsPrintf ("Handler");
break;
+
case ACPI_GPE_DISPATCH_NOTIFY:
+
Count = 0;
Notify = GpeEventInfo->Dispatch.NotifyList;
while (Notify)
@@ -949,7 +955,9 @@ AcpiDbDisplayGpes (
}
AcpiOsPrintf ("Implicit Notify on %u devices", Count);
break;
+
default:
+
AcpiOsPrintf ("UNKNOWN: %X",
GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK);
break;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbexec.c b/sys/contrib/dev/acpica/components/debugger/dbexec.c
index 9715856..2566e2d 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbexec.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbexec.c
@@ -109,6 +109,7 @@ AcpiDbDeleteObjects (
switch (Objects[i].Type)
{
case ACPI_TYPE_BUFFER:
+
ACPI_FREE (Objects[i].Buffer.Pointer);
break;
@@ -125,6 +126,7 @@ AcpiDbDeleteObjects (
break;
default:
+
break;
}
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbhistry.c b/sys/contrib/dev/acpica/components/debugger/dbhistry.c
index 0e05e14..4a97ba4 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbhistry.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbhistry.c
@@ -54,12 +54,12 @@
#define HI_NO_HISTORY 0
#define HI_RECORD_HISTORY 1
-#define HISTORY_SIZE 20
+#define HISTORY_SIZE 40
typedef struct HistoryInfo
{
- char Command[80];
+ char *Command;
UINT32 CmdNum;
} HISTORY_INFO;
@@ -88,13 +88,35 @@ void
AcpiDbAddToHistory (
char *CommandLine)
{
+ UINT16 CmdLen;
+ UINT16 BufferLen;
/* Put command into the next available slot */
+ CmdLen = (UINT16) ACPI_STRLEN (CommandLine);
+ if (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command != NULL)
+ {
+ BufferLen = (UINT16) ACPI_STRLEN (
+ AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command);
+ if (CmdLen > BufferLen)
+ {
+ AcpiOsFree (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].
+ Command);
+ AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command =
+ AcpiOsAllocate (CmdLen + 1);
+ }
+ }
+ else
+ {
+ AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command =
+ AcpiOsAllocate (CmdLen + 1);
+ }
+
ACPI_STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command,
CommandLine);
- AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum = AcpiGbl_NextCmdNum;
+ AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum =
+ AcpiGbl_NextCmdNum;
/* Adjust indexes */
@@ -148,8 +170,12 @@ AcpiDbDisplayHistory (
for (i = 0; i < AcpiGbl_NumHistory; i++)
{
- AcpiOsPrintf ("%ld %s\n", AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
- AcpiGbl_HistoryBuffer[HistoryIndex].Command);
+ if (AcpiGbl_HistoryBuffer[HistoryIndex].Command)
+ {
+ AcpiOsPrintf ("%3ld %s\n",
+ AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum,
+ AcpiGbl_HistoryBuffer[HistoryIndex].Command);
+ }
HistoryIndex++;
if (HistoryIndex >= HISTORY_SIZE)
@@ -199,7 +225,7 @@ AcpiDbGetFromHistory (
{
if (AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum == CmdNum)
{
- /* Found the commnad, return it */
+ /* Found the command, return it */
return (AcpiGbl_HistoryBuffer[HistoryIndex].Command);
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbinput.c b/sys/contrib/dev/acpica/components/debugger/dbinput.c
index 7cbc216..e5fdc2e 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbinput.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbinput.c
@@ -753,6 +753,7 @@ AcpiDbCommandDispatch (
switch (CommandIndex)
{
case CMD_NULL:
+
if (Op)
{
return (AE_OK);
@@ -768,41 +769,50 @@ AcpiDbCommandDispatch (
case CMD_ARGS:
case CMD_ARGUMENTS:
+
AcpiDbDisplayArguments ();
break;
case CMD_BATCH:
+
AcpiDbBatchExecute (AcpiGbl_DbArgs[1]);
break;
case CMD_BREAKPOINT:
+
AcpiDbSetMethodBreakpoint (AcpiGbl_DbArgs[1], WalkState, Op);
break;
case CMD_BUSINFO:
+
AcpiDbGetBusInfo ();
break;
case CMD_CALL:
+
AcpiDbSetMethodCallBreakpoint (Op);
Status = AE_OK;
break;
case CMD_CLOSE:
+
AcpiDbCloseDebugFile ();
break;
case CMD_DEBUG:
+
AcpiDbExecute (AcpiGbl_DbArgs[1],
&AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_SINGLE_STEP);
break;
case CMD_DISASSEMBLE:
case CMD_DISASM:
+
(void) AcpiDbDisassembleMethod (AcpiGbl_DbArgs[1]);
break;
case CMD_DUMP:
+
AcpiDbDecodeAndDisplayObject (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
break;
@@ -819,45 +829,55 @@ AcpiDbCommandDispatch (
break;
case CMD_EVENT:
+
AcpiOsPrintf ("Event command not implemented\n");
break;
case CMD_EVALUATE:
case CMD_EXECUTE:
+
AcpiDbExecute (AcpiGbl_DbArgs[1],
&AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_NO_SINGLE_STEP);
break;
case CMD_FIND:
+
Status = AcpiDbFindNameInNamespace (AcpiGbl_DbArgs[1]);
break;
case CMD_GO:
+
AcpiGbl_CmSingleStep = FALSE;
return (AE_OK);
case CMD_GPE:
+
AcpiDbGenerateGpe (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
break;
case CMD_GPES:
+
AcpiDbDisplayGpes ();
break;
case CMD_HANDLERS:
+
AcpiDbDisplayHandlers ();
break;
case CMD_HELP:
case CMD_HELP2:
+
AcpiDbDisplayHelp (AcpiGbl_DbArgs[1]);
break;
case CMD_HISTORY:
+
AcpiDbDisplayHistory ();
break;
- case CMD_HISTORY_EXE:
+ case CMD_HISTORY_EXE: /* ! command */
+
CommandLine = AcpiDbGetFromHistory (AcpiGbl_DbArgs[1]);
if (!CommandLine)
{
@@ -867,7 +887,8 @@ AcpiDbCommandDispatch (
Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op);
return (Status);
- case CMD_HISTORY_LAST:
+ case CMD_HISTORY_LAST: /* !! command */
+
CommandLine = AcpiDbGetFromHistory (NULL);
if (!CommandLine)
{
@@ -878,14 +899,17 @@ AcpiDbCommandDispatch (
return (Status);
case CMD_INFORMATION:
+
AcpiDbDisplayMethodInfo (Op);
break;
case CMD_INTEGRITY:
+
AcpiDbCheckIntegrity ();
break;
case CMD_INTO:
+
if (Op)
{
AcpiGbl_CmSingleStep = TRUE;
@@ -894,6 +918,7 @@ AcpiDbCommandDispatch (
break;
case CMD_LEVEL:
+
if (ParamCount == 0)
{
AcpiOsPrintf ("Current debug level for file output is: %8.8lX\n",
@@ -921,96 +946,119 @@ AcpiDbCommandDispatch (
break;
case CMD_LIST:
+
AcpiDbDisassembleAml (AcpiGbl_DbArgs[1], Op);
break;
case CMD_LOAD:
+
Status = AcpiDbGetTableFromFile (AcpiGbl_DbArgs[1], NULL);
break;
case CMD_LOCKS:
+
AcpiDbDisplayLocks ();
break;
case CMD_LOCALS:
+
AcpiDbDisplayLocals ();
break;
case CMD_METHODS:
+
Status = AcpiDbDisplayObjects ("METHOD", AcpiGbl_DbArgs[1]);
break;
case CMD_NAMESPACE:
+
AcpiDbDumpNamespace (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
break;
case CMD_NOTIFY:
+
Temp = ACPI_STRTOUL (AcpiGbl_DbArgs[2], NULL, 0);
AcpiDbSendNotify (AcpiGbl_DbArgs[1], Temp);
break;
case CMD_OBJECT:
+
AcpiUtStrupr (AcpiGbl_DbArgs[1]);
Status = AcpiDbDisplayObjects (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
break;
case CMD_OPEN:
+
AcpiDbOpenDebugFile (AcpiGbl_DbArgs[1]);
break;
case CMD_OSI:
+
AcpiDbDisplayInterfaces (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
break;
case CMD_OWNER:
+
AcpiDbDumpNamespaceByOwner (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]);
break;
case CMD_PREDEFINED:
+
AcpiDbCheckPredefinedNames ();
break;
case CMD_PREFIX:
+
AcpiDbSetScope (AcpiGbl_DbArgs[1]);
break;
case CMD_REFERENCES:
+
AcpiDbFindReferences (AcpiGbl_DbArgs[1]);
break;
case CMD_RESOURCES:
+
AcpiDbDisplayResources (AcpiGbl_DbArgs[1]);
break;
case CMD_RESULTS:
+
AcpiDbDisplayResults ();
break;
case CMD_SET:
+
AcpiDbSetMethodData (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2],
AcpiGbl_DbArgs[3]);
break;
case CMD_SLEEP:
+
Status = AcpiDbSleep (AcpiGbl_DbArgs[1]);
break;
case CMD_STATS:
+
Status = AcpiDbDisplayStatistics (AcpiGbl_DbArgs[1]);
break;
case CMD_STOP:
+
return (AE_NOT_IMPLEMENTED);
case CMD_TABLES:
+
AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]);
break;
case CMD_TEMPLATE:
+
AcpiDbDisplayTemplate (AcpiGbl_DbArgs[1]);
break;
case CMD_TERMINATE:
+
AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT);
AcpiUtSubsystemShutdown ();
@@ -1023,28 +1071,34 @@ AcpiDbCommandDispatch (
break;
case CMD_THREADS:
+
AcpiDbCreateExecutionThreads (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2],
AcpiGbl_DbArgs[3]);
break;
case CMD_TRACE:
+
(void) AcpiDebugTrace (AcpiGbl_DbArgs[1],0,0,1);
break;
case CMD_TREE:
+
AcpiDbDisplayCallingTree ();
break;
case CMD_TYPE:
+
AcpiDbDisplayObjectType (AcpiGbl_DbArgs[1]);
break;
case CMD_UNLOAD:
+
AcpiDbUnloadAcpiTable (AcpiGbl_DbArgs[1]);
break;
case CMD_EXIT:
case CMD_QUIT:
+
if (Op)
{
AcpiOsPrintf ("Method execution terminated\n");
@@ -1062,6 +1116,7 @@ AcpiDbCommandDispatch (
case CMD_NOT_FOUND:
default:
+
AcpiOsPrintf ("Unknown Command\n");
return (AE_CTRL_TRUE);
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbmethod.c b/sys/contrib/dev/acpica/components/debugger/dbmethod.c
index e45e021..ca2d92b 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbmethod.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbmethod.c
@@ -271,6 +271,7 @@ AcpiDbSetMethodData (
break;
default:
+
break;
}
@@ -505,25 +506,30 @@ AcpiDbWalkForExecute (
switch (ArgType)
{
case ACPI_TYPE_INTEGER:
+
ThisParam->Integer.Value = 1;
break;
case ACPI_TYPE_STRING:
+
ThisParam->String.Pointer = "This is the default argument string";
ThisParam->String.Length = ACPI_STRLEN (ThisParam->String.Pointer);
break;
case ACPI_TYPE_BUFFER:
+
ThisParam->Buffer.Pointer = (UINT8 *) Params; /* just a garbage buffer */
ThisParam->Buffer.Length = 48;
break;
case ACPI_TYPE_PACKAGE:
+
ThisParam->Package.Elements = NULL;
ThisParam->Package.Count = 0;
break;
default:
+
AcpiOsPrintf ("%s: Unsupported argument type: %u\n",
Pathname, ArgType);
break;
diff --git a/sys/contrib/dev/acpica/components/debugger/dbnames.c b/sys/contrib/dev/acpica/components/debugger/dbnames.c
index 1cfbf83..0219655 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbnames.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbnames.c
@@ -671,7 +671,7 @@ AcpiDbIntegrityWalk (
return (AE_OK);
}
- if (!AcpiUtValidAcpiName (Node->Name.Integer))
+ if (!AcpiUtValidAcpiName (Node->Name.Ascii))
{
AcpiOsPrintf ("Invalid AcpiName for Node %p\n", Node);
return (AE_OK);
diff --git a/sys/contrib/dev/acpica/components/debugger/dbstats.c b/sys/contrib/dev/acpica/components/debugger/dbstats.c
index 6a1c0bb..ef23634 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbstats.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbstats.c
@@ -267,6 +267,7 @@ AcpiDbEnumerateObject (
break;
default:
+
break;
}
}
@@ -479,7 +480,6 @@ AcpiDbDisplayStatistics (
}
break;
-
case CMD_STAT_SIZES:
AcpiOsPrintf ("\nInternal object sizes:\n\n");
@@ -530,7 +530,6 @@ AcpiDbDisplayStatistics (
AcpiOsPrintf ("Notify Info %3d\n", sizeof (ACPI_NOTIFY_INFO));
break;
-
case CMD_STAT_STACK:
#if defined(ACPI_DEBUG_OUTPUT)
@@ -545,6 +544,7 @@ AcpiDbDisplayStatistics (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/debugger/dbutils.c b/sys/contrib/dev/acpica/components/debugger/dbutils.c
index 33b9c19..43036fd 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbutils.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbutils.c
@@ -179,14 +179,12 @@ AcpiDbDumpExternalObject (
AcpiOsPrintf ("[Null Object] (Type=0)\n");
break;
-
case ACPI_TYPE_INTEGER:
AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
-
case ACPI_TYPE_STRING:
AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length);
@@ -194,7 +192,6 @@ AcpiDbDumpExternalObject (
AcpiOsPrintf ("\n");
break;
-
case ACPI_TYPE_BUFFER:
AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
@@ -213,7 +210,6 @@ AcpiDbDumpExternalObject (
}
break;
-
case ACPI_TYPE_PACKAGE:
AcpiOsPrintf ("[Package] Contains %u Elements:\n",
@@ -225,26 +221,22 @@ AcpiDbDumpExternalObject (
}
break;
-
case ACPI_TYPE_LOCAL_REFERENCE:
AcpiOsPrintf ("[Object Reference] = ");
AcpiDmDisplayInternalObject (ObjDesc->Reference.Handle, NULL);
break;
-
case ACPI_TYPE_PROCESSOR:
AcpiOsPrintf ("[Processor]\n");
break;
-
case ACPI_TYPE_POWER:
AcpiOsPrintf ("[Power Resource]\n");
break;
-
default:
AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Type);
diff --git a/sys/contrib/dev/acpica/components/debugger/dbxface.c b/sys/contrib/dev/acpica/components/debugger/dbxface.c
index 6f97582..c154c45 100644
--- a/sys/contrib/dev/acpica/components/debugger/dbxface.c
+++ b/sys/contrib/dev/acpica/components/debugger/dbxface.c
@@ -232,9 +232,11 @@ AcpiDbSingleStep (
{
case AML_CLASS_UNKNOWN:
case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */
+
return (AE_OK);
default:
+
/* All other opcodes -- continue */
break;
}
@@ -410,6 +412,9 @@ AcpiDbInitialize (
ACPI_STATUS Status;
+ ACPI_FUNCTION_TRACE (DbInitialize);
+
+
/* Init globals */
AcpiGbl_DbBuffer = NULL;
@@ -431,7 +436,7 @@ AcpiDbInitialize (
AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE);
if (!AcpiGbl_DbBuffer)
{
- return (AE_NO_MEMORY);
+ return_ACPI_STATUS (AE_NO_MEMORY);
}
ACPI_MEMSET (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE);
@@ -454,14 +459,14 @@ AcpiDbInitialize (
if (ACPI_FAILURE (Status))
{
AcpiOsPrintf ("Could not get debugger mutex\n");
- return (Status);
+ return_ACPI_STATUS (Status);
}
Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY);
if (ACPI_FAILURE (Status))
{
AcpiOsPrintf ("Could not get debugger mutex\n");
- return (Status);
+ return_ACPI_STATUS (Status);
}
/* Create the debug execution thread to execute commands */
@@ -469,8 +474,8 @@ AcpiDbInitialize (
Status = AcpiOsExecute (OSL_DEBUGGER_THREAD, AcpiDbExecuteThread, NULL);
if (ACPI_FAILURE (Status))
{
- AcpiOsPrintf ("Could not start debugger thread\n");
- return (Status);
+ ACPI_EXCEPTION ((AE_INFO, Status, "Could not start debugger thread"));
+ return_ACPI_STATUS (Status);
}
}
@@ -482,7 +487,7 @@ AcpiDbInitialize (
}
#endif
- return (AE_OK);
+ return_ACPI_STATUS (AE_OK);
}
@@ -506,6 +511,7 @@ AcpiDbTerminate (
if (AcpiGbl_DbBuffer)
{
AcpiOsFree (AcpiGbl_DbBuffer);
+ AcpiGbl_DbBuffer = NULL;
}
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c b/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
index 2f6ff72..16db0ff 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c
@@ -194,7 +194,6 @@ AcpiDmByteList (
case ACPI_DASM_BUFFER:
default:
-
/*
* Not a resource, string, or unicode string.
* Just dump the buffer
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c b/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
index 9a68079..b047a60 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c
@@ -128,6 +128,7 @@ AcpiDmParseDeferredOps (
break;
default:
+
ACPI_ERROR ((AE_INFO, "Unhandled deferred AML opcode [0x%.4X]",
Op->Common.AmlOpcode));
break;
@@ -265,6 +266,7 @@ AcpiDmDeferredParse (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmnames.c b/sys/contrib/dev/acpica/components/disassembler/dmnames.c
index b2ef29d..db7434d 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmnames.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmnames.c
@@ -237,20 +237,24 @@ AcpiDmNamestring (
switch (ACPI_GET8 (Name))
{
case 0:
+
SegCount = 0;
break;
case AML_DUAL_NAME_PREFIX:
+
SegCount = 2;
Name++;
break;
case AML_MULTI_NAME_PREFIX_OP:
+
SegCount = (UINT32) ACPI_GET8 (Name + 1);
Name += 2;
break;
default:
+
SegCount = 1;
break;
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmobject.c b/sys/contrib/dev/acpica/components/disassembler/dmobject.c
index 5dde74a..5541e5a 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmobject.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmobject.c
@@ -214,7 +214,6 @@ AcpiDmDecodeInternalObject (
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
-
case ACPI_TYPE_STRING:
AcpiOsPrintf ("(%u) \"%.24s",
@@ -230,7 +229,6 @@ AcpiDmDecodeInternalObject (
}
break;
-
case ACPI_TYPE_BUFFER:
AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length);
@@ -240,7 +238,6 @@ AcpiDmDecodeInternalObject (
}
break;
-
default:
AcpiOsPrintf (" %p", ObjDesc);
@@ -283,14 +280,17 @@ AcpiDmDecodeNode (
/* These types have no attached object */
case ACPI_TYPE_DEVICE:
+
AcpiOsPrintf (" Device");
break;
case ACPI_TYPE_THERMAL:
+
AcpiOsPrintf (" Thermal Zone");
break;
default:
+
AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node));
break;
}
@@ -335,13 +335,11 @@ AcpiDmDisplayInternalObject (
AcpiOsPrintf ("<Parser> ");
break;
-
case ACPI_DESC_TYPE_NAMED:
AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc);
break;
-
case ACPI_DESC_TYPE_OPERAND:
Type = ObjDesc->Common.Type;
@@ -375,7 +373,6 @@ AcpiDmDisplayInternalObject (
}
break;
-
case ACPI_REFCLASS_ARG:
AcpiOsPrintf ("%X ", ObjDesc->Reference.Value);
@@ -388,7 +385,6 @@ AcpiDmDisplayInternalObject (
}
break;
-
case ACPI_REFCLASS_INDEX:
switch (ObjDesc->Reference.TargetType)
@@ -420,7 +416,6 @@ AcpiDmDisplayInternalObject (
}
break;
-
case ACPI_REFCLASS_REFOF:
if (!ObjDesc->Reference.Object)
@@ -446,20 +441,17 @@ AcpiDmDisplayInternalObject (
}
break;
-
case ACPI_REFCLASS_NAME:
AcpiDmDecodeNode (ObjDesc->Reference.Node);
break;
-
case ACPI_REFCLASS_DEBUG:
case ACPI_REFCLASS_TABLE:
AcpiOsPrintf ("\n");
break;
-
default: /* Unknown reference class */
AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
@@ -467,7 +459,6 @@ AcpiDmDisplayInternalObject (
}
break;
-
default:
AcpiOsPrintf ("<Obj> ");
@@ -476,7 +467,6 @@ AcpiDmDisplayInternalObject (
}
break;
-
default:
AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> [%s]",
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmopcode.c b/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
index 01672fa..d1a09ae 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmopcode.c
@@ -121,6 +121,7 @@ AcpiDmPredefinedDescription (
switch (NameString[1])
{
case 'A':
+
if ((NameString[2] == 'C') && (LastCharIsDigit))
{
NameString = "_ACx";
@@ -132,6 +133,7 @@ AcpiDmPredefinedDescription (
break;
case 'E':
+
if ((NameString[2] == 'J') && (LastCharIsDigit))
{
NameString = "_EJx";
@@ -143,6 +145,7 @@ AcpiDmPredefinedDescription (
break;
case 'L':
+
if (LastCharsAreHex)
{
NameString = "_Lxx";
@@ -150,6 +153,7 @@ AcpiDmPredefinedDescription (
break;
case 'Q':
+
if (LastCharsAreHex)
{
NameString = "_Qxx";
@@ -157,6 +161,7 @@ AcpiDmPredefinedDescription (
break;
case 'T':
+
if (NameString[2] == '_')
{
NameString = "_T_x";
@@ -164,6 +169,7 @@ AcpiDmPredefinedDescription (
break;
case 'W':
+
if (LastCharsAreHex)
{
NameString = "_Wxx";
@@ -171,6 +177,7 @@ AcpiDmPredefinedDescription (
break;
default:
+
break;
}
@@ -536,21 +543,26 @@ AcpiDmDisassembleOneOp (
return;
case ACPI_DASM_LNOT_SUFFIX:
+
switch (Op->Common.AmlOpcode)
{
case AML_LEQUAL_OP:
+
AcpiOsPrintf ("LNotEqual");
break;
case AML_LGREATER_OP:
+
AcpiOsPrintf ("LLessEqual");
break;
case AML_LLESS_OP:
+
AcpiOsPrintf ("LGreaterEqual");
break;
default:
+
break;
}
Op->Common.DisasmOpcode = 0;
@@ -589,7 +601,6 @@ AcpiDmDisassembleOneOp (
AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer);
break;
-
case AML_WORD_OP:
if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID)
@@ -602,7 +613,6 @@ AcpiDmDisassembleOneOp (
}
break;
-
case AML_DWORD_OP:
if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID)
@@ -615,22 +625,18 @@ AcpiDmDisassembleOneOp (
}
break;
-
case AML_QWORD_OP:
AcpiOsPrintf ("0x%8.8X%8.8X",
ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
break;
-
case AML_STRING_OP:
AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT8_MAX);
break;
-
case AML_BUFFER_OP:
-
/*
* Determine the type of buffer. We can have one of the following:
*
@@ -680,7 +686,6 @@ AcpiDmDisassembleOneOp (
}
break;
-
case AML_INT_STATICSTRING_OP:
if (Op->Common.Value.String)
@@ -693,13 +698,11 @@ AcpiDmDisassembleOneOp (
}
break;
-
case AML_INT_NAMEPATH_OP:
AcpiDmNamestring (Op->Common.Value.Name);
break;
-
case AML_INT_NAMEDFIELD_OP:
Length = AcpiDmDumpName (Op->Named.Name);
@@ -710,7 +713,6 @@ AcpiDmDisassembleOneOp (
Info->BitOffset += (UINT32) Op->Common.Value.Integer;
break;
-
case AML_INT_RESERVEDFIELD_OP:
/* Offset() -- Must account for previous offsets */
@@ -730,7 +732,6 @@ AcpiDmDisassembleOneOp (
AcpiDmCommaIfFieldMember (Op);
break;
-
case AML_INT_ACCESSFIELD_OP:
case AML_INT_EXTACCESSFIELD_OP:
@@ -748,9 +749,7 @@ AcpiDmDisassembleOneOp (
AcpiDmCommaIfFieldMember (Op);
break;
-
case AML_INT_CONNECTION_OP:
-
/*
* Two types of Connection() - one with a buffer object, the
* other with a namestring that points to a buffer object.
@@ -790,7 +789,6 @@ AcpiDmDisassembleOneOp (
AcpiDmByteList (Info, Op);
break;
-
case AML_INT_METHODCALL_OP:
Op = AcpiPsGetDepthNext (NULL, Op);
@@ -799,7 +797,6 @@ AcpiDmDisassembleOneOp (
AcpiDmNamestring (Op->Common.Value.Name);
break;
-
default:
/* Just get the opcode name and print it */
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrc.c b/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
index fd391b3..6cdd07b 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmresrc.c
@@ -337,6 +337,7 @@ AcpiDmResourceTemplate (
return;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c b/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
index c468bbd..d872e82 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c
@@ -153,16 +153,19 @@ AcpiDmMemoryFields (
switch (Type)
{
case 16:
+
AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
AcpiDmMemoryNames[i]);
break;
case 32:
+
AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
AcpiDmMemoryNames[i]);
break;
default:
+
return;
}
}
@@ -201,21 +204,25 @@ AcpiDmAddressFields (
switch (Type)
{
case 16:
+
AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
AcpiDmAddressNames[i]);
break;
case 32:
+
AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
AcpiDmAddressNames[i]);
break;
case 64:
+
AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i],
AcpiDmAddressNames[i]);
break;
default:
+
return;
}
}
@@ -242,22 +249,27 @@ AcpiDmAddressPrefix (
switch (Type)
{
case ACPI_RESOURCE_TYPE_ADDRESS16:
+
AcpiOsPrintf ("Word");
break;
case ACPI_RESOURCE_TYPE_ADDRESS32:
+
AcpiOsPrintf ("DWord");
break;
case ACPI_RESOURCE_TYPE_ADDRESS64:
+
AcpiOsPrintf ("QWord");
break;
case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
+
AcpiOsPrintf ("Extended");
break;
default:
+
return;
}
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c b/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c
index 5da7df4..8bd2d08 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c
@@ -376,14 +376,17 @@ AcpiDmGpioDescriptor (
switch (ConnectionType)
{
case AML_RESOURCE_GPIO_TYPE_INT:
+
AcpiDmGpioIntDescriptor (Resource, Length, Level);
break;
case AML_RESOURCE_GPIO_TYPE_IO:
+
AcpiDmGpioIoDescriptor (Resource, Length, Level);
break;
default:
+
AcpiOsPrintf ("Unknown GPIO type\n");
break;
}
@@ -443,6 +446,7 @@ AcpiDmDumpSerialBusVendorData (
break;
default:
+
return;
}
diff --git a/sys/contrib/dev/acpica/components/disassembler/dmwalk.c b/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
index 67a7965..5a3fbc6 100644
--- a/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
+++ b/sys/contrib/dev/acpica/components/disassembler/dmwalk.c
@@ -461,6 +461,7 @@ AcpiDmDescendingOp (
/* Fallthrough */
default:
+
AcpiDmIndent (Level);
break;
}
@@ -699,7 +700,6 @@ AcpiDmDescendingOp (
AcpiDmFieldFlags (NextOp);
break;
-
case AML_BUFFER_OP:
/* The next op is the size parameter */
@@ -737,7 +737,6 @@ AcpiDmDescendingOp (
NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST;
return (AE_OK);
-
case AML_VAR_PACKAGE_OP:
case AML_IF_OP:
case AML_WHILE_OP:
@@ -751,7 +750,6 @@ AcpiDmDescendingOp (
}
return (AE_OK);
-
case AML_PACKAGE_OP:
/* The next op is the size parameter */
@@ -763,13 +761,11 @@ AcpiDmDescendingOp (
}
return (AE_OK);
-
case AML_MATCH_OP:
AcpiDmMatchOp (Op);
break;
-
default:
break;
@@ -866,7 +862,6 @@ AcpiDmAscendingOp (
}
break;
-
case BLOCK_BRACE:
case (BLOCK_BRACE | BLOCK_PAREN):
@@ -906,7 +901,6 @@ AcpiDmAscendingOp (
}
break;
-
case BLOCK_NONE:
default:
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c b/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
index bcc58ca..3d256ea 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c
@@ -86,7 +86,6 @@ AcpiDsExecBeginControlOp (
switch (Op->Common.AmlOpcode)
{
case AML_WHILE_OP:
-
/*
* If this is an additional iteration of a while loop, continue.
* There is no need to allocate a new control state.
@@ -107,7 +106,6 @@ AcpiDsExecBeginControlOp (
/*lint -fallthrough */
case AML_IF_OP:
-
/*
* IF/WHILE: Create a new control state to manage these
* constructs. We need to manage these as a stack, in order
@@ -150,6 +148,7 @@ AcpiDsExecBeginControlOp (
break;
default:
+
break;
}
@@ -204,12 +203,10 @@ AcpiDsExecEndControlOp (
AcpiUtDeleteGenericState (ControlState);
break;
-
case AML_ELSE_OP:
break;
-
case AML_WHILE_OP:
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] Op=%p\n", Op));
@@ -252,7 +249,6 @@ AcpiDsExecEndControlOp (
AcpiUtDeleteGenericState (ControlState);
break;
-
case AML_RETURN_OP:
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
@@ -348,12 +344,11 @@ AcpiDsExecEndControlOp (
Status = AE_CTRL_TERMINATE;
break;
-
case AML_NOOP_OP:
/* Just do nothing! */
- break;
+ break;
case AML_BREAK_POINT_OP:
@@ -373,11 +368,9 @@ AcpiDsExecEndControlOp (
"Executed AML Breakpoint opcode");
break;
-
case AML_BREAK_OP:
case AML_CONTINUE_OP: /* ACPI 2.0 */
-
/* Pop and delete control states until we find a while */
while (WalkState->ControlState &&
@@ -410,7 +403,6 @@ AcpiDsExecEndControlOp (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown control opcode=0x%X Op=%p",
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
index 1ab8c3b..ab4f5b9 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsfield.c
@@ -599,21 +599,25 @@ AcpiDsInitFieldObjects (
switch (WalkState->Opcode)
{
case AML_FIELD_OP:
+
Arg = AcpiPsGetArg (Op, 2);
Type = ACPI_TYPE_LOCAL_REGION_FIELD;
break;
case AML_BANK_FIELD_OP:
+
Arg = AcpiPsGetArg (Op, 4);
Type = ACPI_TYPE_LOCAL_BANK_FIELD;
break;
case AML_INDEX_FIELD_OP:
+
Arg = AcpiPsGetArg (Op, 3);
Type = ACPI_TYPE_LOCAL_INDEX_FIELD;
break;
default:
+
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsinit.c b/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
index 7aca0e8..5ab1f50 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsinit.c
@@ -128,20 +128,18 @@ AcpiDsInitOneObject (
Info->OpRegionCount++;
break;
-
case ACPI_TYPE_METHOD:
Info->MethodCount++;
break;
-
case ACPI_TYPE_DEVICE:
Info->DeviceCount++;
break;
-
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c b/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c
index 164e0ef..76157f5 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c
@@ -315,6 +315,7 @@ AcpiDsMethodDataGetNode (
break;
default:
+
ACPI_ERROR ((AE_INFO, "Type %u is invalid", Type));
return_ACPI_STATUS (AE_TYPE);
}
@@ -472,7 +473,6 @@ AcpiDsMethodDataGetValue (
return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG);
case ACPI_REFCLASS_LOCAL:
-
/*
* No error message for this case, will be trapped again later to
* detect and ignore cases of Store(LocalX,LocalX)
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsobject.c b/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
index d718929..a853d3d 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsobject.c
@@ -677,7 +677,6 @@ AcpiDsInitObjectFromOp (
switch (ObjDesc->Common.Type)
{
case ACPI_TYPE_BUFFER:
-
/*
* Defer evaluation of Buffer TermArg operand
*/
@@ -687,9 +686,7 @@ AcpiDsInitObjectFromOp (
ObjDesc->Buffer.AmlLength = Op->Named.Length;
break;
-
case ACPI_TYPE_PACKAGE:
-
/*
* Defer evaluation of Package TermArg operand
*/
@@ -699,7 +696,6 @@ AcpiDsInitObjectFromOp (
ObjDesc->Package.AmlLength = Op->Named.Length;
break;
-
case ACPI_TYPE_INTEGER:
switch (OpInfo->Type)
@@ -752,7 +748,6 @@ AcpiDsInitObjectFromOp (
}
break;
-
case AML_TYPE_LITERAL:
ObjDesc->Integer.Value = Op->Common.Value.Integer;
@@ -770,8 +765,8 @@ AcpiDsInitObjectFromOp (
#endif
break;
-
default:
+
ACPI_ERROR ((AE_INFO, "Unknown Integer type 0x%X",
OpInfo->Type));
Status = AE_AML_OPERAND_TYPE;
@@ -779,7 +774,6 @@ AcpiDsInitObjectFromOp (
}
break;
-
case ACPI_TYPE_STRING:
ObjDesc->String.Pointer = Op->Common.Value.String;
@@ -792,11 +786,9 @@ AcpiDsInitObjectFromOp (
ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER;
break;
-
case ACPI_TYPE_METHOD:
break;
-
case ACPI_TYPE_LOCAL_REFERENCE:
switch (OpInfo->Type)
@@ -816,7 +808,6 @@ AcpiDsInitObjectFromOp (
#endif
break;
-
case AML_TYPE_METHOD_ARGUMENT:
/* Arg ID (0-6) is (AML opcode - base AML_ARG_OP) */
@@ -860,7 +851,6 @@ AcpiDsInitObjectFromOp (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unimplemented data type: 0x%X",
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c b/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
index f69b113..b7ff590 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c
@@ -680,6 +680,7 @@ AcpiDsEvalDataObjectOperands (
break;
default:
+
return_ACPI_STATUS (AE_AML_BAD_OPCODE);
}
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dsutils.c b/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
index 9995a20..0a386cc 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dsutils.c
@@ -264,7 +264,6 @@ AcpiDsIsResultUsed (
case AML_IF_OP:
case AML_WHILE_OP:
-
/*
* If we are executing the predicate AND this is the predicate op,
* we will use the return value
@@ -277,7 +276,9 @@ AcpiDsIsResultUsed (
break;
default:
+
/* Ignore other control opcodes */
+
break;
}
@@ -285,16 +286,13 @@ AcpiDsIsResultUsed (
goto ResultNotUsed;
-
case AML_CLASS_CREATE:
-
/*
* These opcodes allow TermArg(s) as operands and therefore
* the operands can be method calls. The result is used.
*/
goto ResultUsed;
-
case AML_CLASS_NAMED_OBJECT:
if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) ||
@@ -314,9 +312,7 @@ AcpiDsIsResultUsed (
goto ResultNotUsed;
-
default:
-
/*
* In all other cases. the parent will actually use the return
* object, so keep it.
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswexec.c b/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
index 7db3e6a..6955f3c 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dswexec.c
@@ -318,7 +318,6 @@ AcpiDsExecBeginOp (
Status = AcpiDsExecBeginControlOp (WalkState, Op);
break;
-
case AML_CLASS_NAMED_OBJECT:
if (WalkState->WalkType & ACPI_WALK_METHOD)
@@ -350,14 +349,13 @@ AcpiDsExecBeginOp (
}
break;
-
case AML_CLASS_EXECUTE:
case AML_CLASS_CREATE:
break;
-
default:
+
break;
}
@@ -441,7 +439,6 @@ AcpiDsExecEndOp (
}
break;
-
case AML_CLASS_EXECUTE: /* Most operators with arguments */
/* Build resolved operand stack */
@@ -514,7 +511,6 @@ AcpiDsExecEndOp (
}
break;
-
default:
switch (OpType)
@@ -527,9 +523,7 @@ AcpiDsExecEndOp (
break;
-
case AML_TYPE_METHOD_CALL:
-
/*
* If the method is referenced from within a package
* declaration, it is not a invocation of the method, just
@@ -596,7 +590,6 @@ AcpiDsExecEndOp (
*/
return_ACPI_STATUS (Status);
-
case AML_TYPE_CREATE_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
@@ -620,7 +613,6 @@ AcpiDsExecEndOp (
switch (Op->Common.Parent->Common.AmlOpcode)
{
case AML_NAME_OP:
-
/*
* Put the Node on the object stack (Contains the ACPI Name
* of this object)
@@ -661,7 +653,6 @@ AcpiDsExecEndOp (
}
break;
-
case AML_TYPE_NAMED_FIELD:
case AML_TYPE_NAMED_COMPLEX:
case AML_TYPE_NAMED_SIMPLE:
@@ -708,14 +699,12 @@ AcpiDsExecEndOp (
}
break;
-
case AML_TYPE_UNDEFINED:
ACPI_ERROR ((AE_INFO,
"Undefined opcode type Op=%p", Op));
return_ACPI_STATUS (AE_NOT_IMPLEMENTED);
-
case AML_TYPE_BOGUS:
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
@@ -723,7 +712,6 @@ AcpiDsExecEndOp (
WalkState->Opcode, Op));
break;
-
default:
ACPI_ERROR ((AE_INFO,
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswload.c b/sys/contrib/dev/acpica/components/dispatcher/dswload.c
index f86dea2..1cc8d4f 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dswload.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dswload.c
@@ -81,6 +81,7 @@ AcpiDsInitCallbacks (
switch (PassNumber)
{
case 1:
+
WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
ACPI_PARSE_DELETE_TREE;
WalkState->DescendingCallback = AcpiDsLoad1BeginOp;
@@ -88,6 +89,7 @@ AcpiDsInitCallbacks (
break;
case 2:
+
WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
ACPI_PARSE_DELETE_TREE;
WalkState->DescendingCallback = AcpiDsLoad2BeginOp;
@@ -95,6 +97,7 @@ AcpiDsInitCallbacks (
break;
case 3:
+
#ifndef ACPI_NO_METHOD_EXECUTION
WalkState->ParseFlags |= ACPI_PARSE_EXECUTE |
ACPI_PARSE_DELETE_TREE;
@@ -104,6 +107,7 @@ AcpiDsInitCallbacks (
break;
default:
+
return (AE_BAD_PARAMETER);
}
@@ -174,7 +178,6 @@ AcpiDsLoad1BeginOp (
switch (WalkState->Opcode)
{
case AML_SCOPE_OP:
-
/*
* The target name of the Scope() operator must exist at this point so
* that we can actually open the scope to enter new names underneath it.
@@ -221,7 +224,6 @@ AcpiDsLoad1BeginOp (
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
-
/*
* These types we will allow, but we will change the type.
* This enables some existing code of the form:
@@ -242,7 +244,6 @@ AcpiDsLoad1BeginOp (
break;
case ACPI_TYPE_METHOD:
-
/*
* Allow scope change to root during execution of module-level
* code. Root is typed METHOD during this time.
@@ -268,7 +269,6 @@ AcpiDsLoad1BeginOp (
}
break;
-
default:
/*
* For all other named opcodes, we will enter the name into
diff --git a/sys/contrib/dev/acpica/components/dispatcher/dswload2.c b/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
index 9114895..2b85413 100644
--- a/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
+++ b/sys/contrib/dev/acpica/components/dispatcher/dswload2.c
@@ -496,7 +496,6 @@ AcpiDsLoad2EndOp (
Status = AcpiDsCreateBufferField (Op, WalkState);
break;
-
case AML_TYPE_NAMED_FIELD:
/*
* If we are executing a method, initialize the field
@@ -525,12 +524,12 @@ AcpiDsLoad2EndOp (
break;
default:
+
/* All NAMED_FIELD opcodes must be handled above */
break;
}
break;
-
case AML_TYPE_NAMED_SIMPLE:
Status = AcpiDsCreateOperands (WalkState, Arg);
@@ -561,13 +560,13 @@ AcpiDsLoad2EndOp (
Status = AcpiExCreateEvent (WalkState);
break;
-
case AML_ALIAS_OP:
Status = AcpiExCreateAlias (WalkState);
break;
default:
+
/* Unknown opcode */
Status = AE_OK;
@@ -652,13 +651,11 @@ AcpiDsLoad2EndOp (
}
break;
-
case AML_NAME_OP:
Status = AcpiDsCreateNode (WalkState, Node, Op);
break;
-
case AML_METHOD_OP:
/*
* MethodOp PkgLength NameString MethodFlags TermList
@@ -696,18 +693,17 @@ AcpiDsLoad2EndOp (
#endif /* ACPI_NO_METHOD_EXECUTION */
default:
+
/* All NAMED_COMPLEX opcodes must be handled above */
break;
}
break;
-
case AML_CLASS_INTERNAL:
/* case AML_INT_NAMEPATH_OP: */
break;
-
case AML_CLASS_METHOD_CALL:
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
@@ -747,6 +743,7 @@ AcpiDsLoad2EndOp (
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/events/evglock.c b/sys/contrib/dev/acpica/components/events/evglock.c
index 4cec447..9c5ade0 100644
--- a/sys/contrib/dev/acpica/components/events/evglock.c
+++ b/sys/contrib/dev/acpica/components/events/evglock.c
@@ -144,6 +144,7 @@ AcpiEvRemoveGlobalLockHandler (
Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL,
AcpiEvGlobalLockHandler);
+ AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock);
return_ACPI_STATUS (Status);
}
diff --git a/sys/contrib/dev/acpica/components/events/evgpe.c b/sys/contrib/dev/acpica/components/events/evgpe.c
index f60b413..f4d1214 100644
--- a/sys/contrib/dev/acpica/components/events/evgpe.c
+++ b/sys/contrib/dev/acpica/components/events/evgpe.c
@@ -578,7 +578,6 @@ AcpiEvAsynchExecuteGpeMethod (
switch (LocalGpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK)
{
case ACPI_GPE_DISPATCH_NOTIFY:
-
/*
* Implicit notify.
* Dispatch a DEVICE_WAKE notify to the appropriate handler.
@@ -631,6 +630,7 @@ AcpiEvAsynchExecuteGpeMethod (
break;
default:
+
return_VOID; /* Should never happen */
}
@@ -817,7 +817,6 @@ AcpiEvGpeDispatch (
case ACPI_GPE_DISPATCH_METHOD:
case ACPI_GPE_DISPATCH_NOTIFY:
-
/*
* Execute the method associated with the GPE
* NOTE: Level-triggered GPEs are cleared after the method completes.
@@ -833,7 +832,6 @@ AcpiEvGpeDispatch (
break;
default:
-
/*
* No handler or method to run!
* 03/2010: This case should no longer be possible. We will not allow
diff --git a/sys/contrib/dev/acpica/components/events/evgpeblk.c b/sys/contrib/dev/acpica/components/events/evgpeblk.c
index f223b1a..f0d53a3 100644
--- a/sys/contrib/dev/acpica/components/events/evgpeblk.c
+++ b/sys/contrib/dev/acpica/components/events/evgpeblk.c
@@ -420,6 +420,8 @@ AcpiEvCreateGpeBlock (
Status = AcpiEvInstallGpeBlock (GpeBlock, InterruptNumber);
if (ACPI_FAILURE (Status))
{
+ ACPI_FREE (GpeBlock->RegisterInfo);
+ ACPI_FREE (GpeBlock->EventInfo);
ACPI_FREE (GpeBlock);
return_ACPI_STATUS (Status);
}
diff --git a/sys/contrib/dev/acpica/components/events/evgpeinit.c b/sys/contrib/dev/acpica/components/events/evgpeinit.c
index 9e8630d..d87c6c6 100644
--- a/sys/contrib/dev/acpica/components/events/evgpeinit.c
+++ b/sys/contrib/dev/acpica/components/events/evgpeinit.c
@@ -382,14 +382,17 @@ AcpiEvMatchGpeMethod (
switch (Name[1])
{
case 'L':
+
Type = ACPI_GPE_LEVEL_TRIGGERED;
break;
case 'E':
+
Type = ACPI_GPE_EDGE_TRIGGERED;
break;
default:
+
/* Unknown method type, just ignore it */
ACPI_DEBUG_PRINT ((ACPI_DB_LOAD,
diff --git a/sys/contrib/dev/acpica/components/events/evhandler.c b/sys/contrib/dev/acpica/components/events/evhandler.c
index f32ba65..cb03bc9 100644
--- a/sys/contrib/dev/acpica/components/events/evhandler.c
+++ b/sys/contrib/dev/acpica/components/events/evhandler.c
@@ -393,36 +393,43 @@ AcpiEvInstallSpaceHandler (
switch (SpaceId)
{
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
+
Handler = AcpiExSystemMemorySpaceHandler;
Setup = AcpiEvSystemMemoryRegionSetup;
break;
case ACPI_ADR_SPACE_SYSTEM_IO:
+
Handler = AcpiExSystemIoSpaceHandler;
Setup = AcpiEvIoSpaceRegionSetup;
break;
case ACPI_ADR_SPACE_PCI_CONFIG:
+
Handler = AcpiExPciConfigSpaceHandler;
Setup = AcpiEvPciConfigRegionSetup;
break;
case ACPI_ADR_SPACE_CMOS:
+
Handler = AcpiExCmosSpaceHandler;
Setup = AcpiEvCmosRegionSetup;
break;
case ACPI_ADR_SPACE_PCI_BAR_TARGET:
+
Handler = AcpiExPciBarSpaceHandler;
Setup = AcpiEvPciBarRegionSetup;
break;
case ACPI_ADR_SPACE_DATA_TABLE:
+
Handler = AcpiExDataTableSpaceHandler;
Setup = NULL;
break;
default:
+
Status = AE_BAD_PARAMETER;
goto UnlockAndExit;
}
diff --git a/sys/contrib/dev/acpica/components/events/evmisc.c b/sys/contrib/dev/acpica/components/events/evmisc.c
index 034b8e0..740eb28 100644
--- a/sys/contrib/dev/acpica/components/events/evmisc.c
+++ b/sys/contrib/dev/acpica/components/events/evmisc.c
@@ -86,6 +86,7 @@ AcpiEvIsNotifyObject (
return (TRUE);
default:
+
return (FALSE);
}
}
@@ -306,6 +307,8 @@ AcpiEvTerminate (
ACPI_ERROR ((AE_INFO,
"Could not remove Global Lock handler"));
}
+
+ AcpiGbl_EventsInitialized = FALSE;
}
/* Deallocate all handler objects installed within GPE info structs */
diff --git a/sys/contrib/dev/acpica/components/events/evrgnini.c b/sys/contrib/dev/acpica/components/events/evrgnini.c
index 90a6b02..5a9e9e8 100644
--- a/sys/contrib/dev/acpica/components/events/evrgnini.c
+++ b/sys/contrib/dev/acpica/components/events/evrgnini.c
@@ -664,7 +664,9 @@ AcpiEvInitializeRegion (
break;
default:
+
/* Ignore other objects */
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/events/evxfgpe.c b/sys/contrib/dev/acpica/components/events/evxfgpe.c
index c574b79..0a40bd9 100644
--- a/sys/contrib/dev/acpica/components/events/evxfgpe.c
+++ b/sys/contrib/dev/acpica/components/events/evxfgpe.c
@@ -250,14 +250,17 @@ AcpiSetGpe (
switch (Action)
{
case ACPI_GPE_ENABLE:
+
Status = AcpiEvEnableGpe (GpeEventInfo);
break;
case ACPI_GPE_DISABLE:
+
Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE);
break;
default:
+
Status = AE_BAD_PARAMETER;
break;
}
@@ -487,14 +490,17 @@ AcpiSetGpeWakeMask (
switch (Action)
{
case ACPI_GPE_ENABLE:
+
ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, (UINT8) RegisterBit);
break;
case ACPI_GPE_DISABLE:
+
ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, (UINT8) RegisterBit);
break;
default:
+
ACPI_ERROR ((AE_INFO, "%u, Invalid action", Action));
Status = AE_BAD_PARAMETER;
break;
diff --git a/sys/contrib/dev/acpica/components/events/evxfregn.c b/sys/contrib/dev/acpica/components/events/evxfregn.c
index 95e598b..432657d 100644
--- a/sys/contrib/dev/acpica/components/events/evxfregn.c
+++ b/sys/contrib/dev/acpica/components/events/evxfregn.c
@@ -149,6 +149,7 @@ AcpiInstallAddressSpaceHandler (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/executer/exconfig.c b/sys/contrib/dev/acpica/components/executer/exconfig.c
index ad35b35..2306e83 100644
--- a/sys/contrib/dev/acpica/components/executer/exconfig.c
+++ b/sys/contrib/dev/acpica/components/executer/exconfig.c
@@ -483,7 +483,6 @@ AcpiExLoadOp (
TableDesc.Address = ObjDesc->Region.Address;
break;
-
case ACPI_TYPE_BUFFER: /* Buffer or resolved RegionField */
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
@@ -526,8 +525,8 @@ AcpiExLoadOp (
TableDesc.Address = ACPI_TO_INTEGER (TableDesc.Pointer);
break;
-
default:
+
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
diff --git a/sys/contrib/dev/acpica/components/executer/exconvrt.c b/sys/contrib/dev/acpica/components/executer/exconvrt.c
index f185371..f6113a5 100644
--- a/sys/contrib/dev/acpica/components/executer/exconvrt.c
+++ b/sys/contrib/dev/acpica/components/executer/exconvrt.c
@@ -114,6 +114,7 @@ AcpiExConvertToInteger (
break;
default:
+
return_ACPI_STATUS (AE_TYPE);
}
@@ -133,7 +134,6 @@ AcpiExConvertToInteger (
switch (ObjDesc->Common.Type)
{
case ACPI_TYPE_STRING:
-
/*
* Convert string to an integer - for most cases, the string must be
* hexadecimal as per the ACPI specification. The only exception (as
@@ -147,7 +147,6 @@ AcpiExConvertToInteger (
}
break;
-
case ACPI_TYPE_BUFFER:
/* Check for zero-length buffer */
@@ -179,10 +178,10 @@ AcpiExConvertToInteger (
}
break;
-
default:
/* No other types can get here */
+
break;
}
@@ -242,7 +241,6 @@ AcpiExConvertToBuffer (
case ACPI_TYPE_INTEGER:
-
/*
* Create a new Buffer object.
* Need enough space for one integer
@@ -261,9 +259,7 @@ AcpiExConvertToBuffer (
AcpiGbl_IntegerByteWidth);
break;
-
case ACPI_TYPE_STRING:
-
/*
* Create a new Buffer object
* Size will be the string length
@@ -287,8 +283,8 @@ AcpiExConvertToBuffer (
ObjDesc->String.Length);
break;
-
default:
+
return_ACPI_STATUS (AE_TYPE);
}
@@ -344,15 +340,18 @@ AcpiExConvertToAscii (
switch (DataWidth)
{
case 1:
+
DecimalLength = ACPI_MAX8_DECIMAL_DIGITS;
break;
case 4:
+
DecimalLength = ACPI_MAX32_DECIMAL_DIGITS;
break;
case 8:
default:
+
DecimalLength = ACPI_MAX64_DECIMAL_DIGITS;
break;
}
@@ -461,7 +460,6 @@ AcpiExConvertToString (
*ResultDesc = ObjDesc;
return_ACPI_STATUS (AE_OK);
-
case ACPI_TYPE_INTEGER:
switch (Type)
@@ -505,7 +503,6 @@ AcpiExConvertToString (
NewBuf [StringLength] = 0;
break;
-
case ACPI_TYPE_BUFFER:
/* Setup string length, base, and separator */
@@ -604,6 +601,7 @@ AcpiExConvertToString (
break;
default:
+
return_ACPI_STATUS (AE_TYPE);
}
@@ -663,6 +661,7 @@ AcpiExConvertToTargetType (
break;
default:
+
/* No conversion allowed for these types */
if (DestinationType != SourceDesc->Common.Type)
@@ -676,7 +675,6 @@ AcpiExConvertToTargetType (
}
break;
-
case ARGI_TARGETREF:
switch (DestinationType)
@@ -693,7 +691,6 @@ AcpiExConvertToTargetType (
16);
break;
-
case ACPI_TYPE_STRING:
/*
* The operand must be a String. We can convert an
@@ -703,7 +700,6 @@ AcpiExConvertToTargetType (
ACPI_IMPLICIT_CONVERT_HEX);
break;
-
case ACPI_TYPE_BUFFER:
/*
* The operand must be a Buffer. We can convert an
@@ -712,8 +708,8 @@ AcpiExConvertToTargetType (
Status = AcpiExConvertToBuffer (SourceDesc, ResultDesc);
break;
-
default:
+
ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: 0x%X",
DestinationType));
Status = AE_AML_INTERNAL;
@@ -721,15 +717,14 @@ AcpiExConvertToTargetType (
}
break;
-
case ARGI_REFERENCE:
/*
* CreateXxxxField cases - we are storing the field object into the name
*/
break;
-
default:
+
ACPI_ERROR ((AE_INFO,
"Unknown Target type ID 0x%X AmlOpcode 0x%X DestType %s",
GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs),
diff --git a/sys/contrib/dev/acpica/components/executer/excreate.c b/sys/contrib/dev/acpica/components/executer/excreate.c
index 1851957..55715c2 100644
--- a/sys/contrib/dev/acpica/components/executer/excreate.c
+++ b/sys/contrib/dev/acpica/components/executer/excreate.c
@@ -113,7 +113,6 @@ AcpiExCreateAlias (
case ACPI_TYPE_BUFFER:
case ACPI_TYPE_PACKAGE:
case ACPI_TYPE_BUFFER_FIELD:
-
/*
* These types open a new scope, so we need the NS node in order to access
* any children.
@@ -123,7 +122,6 @@ AcpiExCreateAlias (
case ACPI_TYPE_PROCESSOR:
case ACPI_TYPE_THERMAL:
case ACPI_TYPE_LOCAL_SCOPE:
-
/*
* The new alias has the type ALIAS and points to the original
* NS node, not the object itself.
@@ -133,7 +131,6 @@ AcpiExCreateAlias (
break;
case ACPI_TYPE_METHOD:
-
/*
* Control method aliases need to be differentiated
*/
diff --git a/sys/contrib/dev/acpica/components/executer/exdebug.c b/sys/contrib/dev/acpica/components/executer/exdebug.c
index 926f8e2..06f35b8 100644
--- a/sys/contrib/dev/acpica/components/executer/exdebug.c
+++ b/sys/contrib/dev/acpica/components/executer/exdebug.c
@@ -208,6 +208,7 @@ AcpiExDoDebugObject (
return_VOID;
default:
+
break;
}
@@ -241,6 +242,7 @@ AcpiExDoDebugObject (
break;
default:
+
AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object,
Level+4, 0);
break;
diff --git a/sys/contrib/dev/acpica/components/executer/exdump.c b/sys/contrib/dev/acpica/components/executer/exdump.c
index 5d1527b..1dc27bb 100644
--- a/sys/contrib/dev/acpica/components/executer/exdump.c
+++ b/sys/contrib/dev/acpica/components/executer/exdump.c
@@ -380,6 +380,7 @@ AcpiExDumpObject (
switch (Info->Opcode)
{
case ACPI_EXD_INIT:
+
break;
case ACPI_EXD_TYPE:
@@ -541,19 +542,16 @@ AcpiExDumpOperand (
AcpiOsPrintf ("\n");
break;
-
case ACPI_REFCLASS_INDEX:
AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
break;
-
case ACPI_REFCLASS_TABLE:
AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
break;
-
case ACPI_REFCLASS_REFOF:
AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
@@ -561,20 +559,17 @@ AcpiExDumpOperand (
ObjDesc->Reference.Object)->Common.Type));
break;
-
case ACPI_REFCLASS_NAME:
AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii);
break;
-
case ACPI_REFCLASS_ARG:
case ACPI_REFCLASS_LOCAL:
AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
break;
-
default: /* Unknown reference class */
AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
@@ -582,7 +577,6 @@ AcpiExDumpOperand (
}
break;
-
case ACPI_TYPE_BUFFER:
AcpiOsPrintf ("Buffer length %.2X @ %p\n",
@@ -604,14 +598,12 @@ AcpiExDumpOperand (
}
break;
-
case ACPI_TYPE_INTEGER:
AcpiOsPrintf ("Integer %8.8X%8.8X\n",
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
-
case ACPI_TYPE_PACKAGE:
AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
@@ -632,7 +624,6 @@ AcpiExDumpOperand (
}
break;
-
case ACPI_TYPE_REGION:
AcpiOsPrintf ("Region %s (%X)",
@@ -655,7 +646,6 @@ AcpiExDumpOperand (
}
break;
-
case ACPI_TYPE_STRING:
AcpiOsPrintf ("String length %X @ %p ",
@@ -666,13 +656,11 @@ AcpiExDumpOperand (
AcpiOsPrintf ("\n");
break;
-
case ACPI_TYPE_LOCAL_BANK_FIELD:
AcpiOsPrintf ("BankField\n");
break;
-
case ACPI_TYPE_LOCAL_REGION_FIELD:
AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
@@ -687,13 +675,11 @@ AcpiExDumpOperand (
AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1);
break;
-
case ACPI_TYPE_LOCAL_INDEX_FIELD:
AcpiOsPrintf ("IndexField\n");
break;
-
case ACPI_TYPE_BUFFER_FIELD:
AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
@@ -716,13 +702,11 @@ AcpiExDumpOperand (
}
break;
-
case ACPI_TYPE_EVENT:
AcpiOsPrintf ("Event\n");
break;
-
case ACPI_TYPE_METHOD:
AcpiOsPrintf ("Method(%X) @ %p:%X\n",
@@ -731,38 +715,33 @@ AcpiExDumpOperand (
ObjDesc->Method.AmlLength);
break;
-
case ACPI_TYPE_MUTEX:
AcpiOsPrintf ("Mutex\n");
break;
-
case ACPI_TYPE_DEVICE:
AcpiOsPrintf ("Device\n");
break;
-
case ACPI_TYPE_POWER:
AcpiOsPrintf ("Power\n");
break;
-
case ACPI_TYPE_PROCESSOR:
AcpiOsPrintf ("Processor\n");
break;
-
case ACPI_TYPE_THERMAL:
AcpiOsPrintf ("Thermal\n");
break;
-
default:
+
/* Unknown Type */
AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
@@ -1005,7 +984,6 @@ AcpiExDumpPackageObj (
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
-
case ACPI_TYPE_STRING:
AcpiOsPrintf ("[String] Value: ");
@@ -1013,7 +991,6 @@ AcpiExDumpPackageObj (
AcpiOsPrintf ("\n");
break;
-
case ACPI_TYPE_BUFFER:
AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
@@ -1028,7 +1005,6 @@ AcpiExDumpPackageObj (
}
break;
-
case ACPI_TYPE_PACKAGE:
AcpiOsPrintf ("[Package] Contains %u Elements:\n",
@@ -1040,7 +1016,6 @@ AcpiExDumpPackageObj (
}
break;
-
case ACPI_TYPE_LOCAL_REFERENCE:
AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X",
@@ -1049,7 +1024,6 @@ AcpiExDumpPackageObj (
AcpiExDumpReferenceObj (ObjDesc);
break;
-
default:
AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type);
diff --git a/sys/contrib/dev/acpica/components/executer/exfield.c b/sys/contrib/dev/acpica/components/executer/exfield.c
index bade0f8..9cab258 100644
--- a/sys/contrib/dev/acpica/components/executer/exfield.c
+++ b/sys/contrib/dev/acpica/components/executer/exfield.c
@@ -360,21 +360,25 @@ AcpiExWriteDataToField (
switch (SourceDesc->Common.Type)
{
case ACPI_TYPE_INTEGER:
+
Buffer = &SourceDesc->Integer.Value;
Length = sizeof (SourceDesc->Integer.Value);
break;
case ACPI_TYPE_BUFFER:
+
Buffer = SourceDesc->Buffer.Pointer;
Length = SourceDesc->Buffer.Length;
break;
case ACPI_TYPE_STRING:
+
Buffer = SourceDesc->String.Pointer;
Length = SourceDesc->String.Length;
break;
default:
+
return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
}
diff --git a/sys/contrib/dev/acpica/components/executer/exfldio.c b/sys/contrib/dev/acpica/components/executer/exfldio.c
index fd58eed..c355b74 100644
--- a/sys/contrib/dev/acpica/components/executer/exfldio.c
+++ b/sys/contrib/dev/acpica/components/executer/exfldio.c
@@ -480,9 +480,7 @@ AcpiExFieldDatumIo (
Status = AE_OK;
break;
-
case ACPI_TYPE_LOCAL_BANK_FIELD:
-
/*
* Ensure that the BankValue is not beyond the capacity of
* the register
@@ -512,7 +510,6 @@ AcpiExFieldDatumIo (
/*lint -fallthrough */
-
case ACPI_TYPE_LOCAL_REGION_FIELD:
/*
* For simple RegionFields, we just directly access the owning
@@ -522,10 +519,7 @@ AcpiExFieldDatumIo (
ReadWrite);
break;
-
case ACPI_TYPE_LOCAL_INDEX_FIELD:
-
-
/*
* Ensure that the IndexValue is not beyond the capacity of
* the register
@@ -575,7 +569,6 @@ AcpiExFieldDatumIo (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Wrong object type in field I/O %u",
diff --git a/sys/contrib/dev/acpica/components/executer/exmisc.c b/sys/contrib/dev/acpica/components/executer/exmisc.c
index 93f6487..2abbe29 100644
--- a/sys/contrib/dev/acpica/components/executer/exmisc.c
+++ b/sys/contrib/dev/acpica/components/executer/exmisc.c
@@ -115,16 +115,13 @@ AcpiExGetObjectReference (
}
break;
-
case ACPI_DESC_TYPE_NAMED:
-
/*
* A named reference that has already been resolved to a Node
*/
ReferencedObj = ObjDesc;
break;
-
default:
ACPI_ERROR ((AE_INFO, "Invalid descriptor type 0x%X",
@@ -286,19 +283,23 @@ AcpiExDoConcatenate (
switch (Operand0->Common.Type)
{
case ACPI_TYPE_INTEGER:
+
Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16);
break;
case ACPI_TYPE_STRING:
+
Status = AcpiExConvertToString (Operand1, &LocalOperand1,
ACPI_IMPLICIT_CONVERT_HEX);
break;
case ACPI_TYPE_BUFFER:
+
Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1);
break;
default:
+
ACPI_ERROR ((AE_INFO, "Invalid object type: 0x%X",
Operand0->Common.Type));
Status = AE_AML_INTERNAL;
@@ -450,37 +451,30 @@ AcpiExDoMathOp (
return (Integer0 + Integer1);
-
case AML_BIT_AND_OP: /* And (Integer0, Integer1, Result) */
return (Integer0 & Integer1);
-
case AML_BIT_NAND_OP: /* NAnd (Integer0, Integer1, Result) */
return (~(Integer0 & Integer1));
-
case AML_BIT_OR_OP: /* Or (Integer0, Integer1, Result) */
return (Integer0 | Integer1);
-
case AML_BIT_NOR_OP: /* NOr (Integer0, Integer1, Result) */
return (~(Integer0 | Integer1));
-
case AML_BIT_XOR_OP: /* XOr (Integer0, Integer1, Result) */
return (Integer0 ^ Integer1);
-
case AML_MULTIPLY_OP: /* Multiply (Integer0, Integer1, Result) */
return (Integer0 * Integer1);
-
case AML_SHIFT_LEFT_OP: /* ShiftLeft (Operand, ShiftCount, Result)*/
/*
@@ -493,7 +487,6 @@ AcpiExDoMathOp (
}
return (Integer0 << Integer1);
-
case AML_SHIFT_RIGHT_OP: /* ShiftRight (Operand, ShiftCount, Result) */
/*
@@ -506,7 +499,6 @@ AcpiExDoMathOp (
}
return (Integer0 >> Integer1);
-
case AML_SUBTRACT_OP: /* Subtract (Integer0, Integer1, Result) */
return (Integer0 - Integer1);
@@ -571,6 +563,7 @@ AcpiExDoLogicalNumericOp (
break;
default:
+
Status = AE_AML_INTERNAL;
break;
}
@@ -638,19 +631,23 @@ AcpiExDoLogicalOp (
switch (Operand0->Common.Type)
{
case ACPI_TYPE_INTEGER:
+
Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16);
break;
case ACPI_TYPE_STRING:
+
Status = AcpiExConvertToString (Operand1, &LocalOperand1,
ACPI_IMPLICIT_CONVERT_HEX);
break;
case ACPI_TYPE_BUFFER:
+
Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1);
break;
default:
+
Status = AE_AML_INTERNAL;
break;
}
@@ -699,6 +696,7 @@ AcpiExDoLogicalOp (
break;
default:
+
Status = AE_AML_INTERNAL;
break;
}
@@ -776,6 +774,7 @@ AcpiExDoLogicalOp (
break;
default:
+
Status = AE_AML_INTERNAL;
break;
}
diff --git a/sys/contrib/dev/acpica/components/executer/exnames.c b/sys/contrib/dev/acpica/components/executer/exnames.c
index 16d89e3..9c11e7f 100644
--- a/sys/contrib/dev/acpica/components/executer/exnames.c
+++ b/sys/contrib/dev/acpica/components/executer/exnames.c
@@ -334,7 +334,6 @@ AcpiExGetNameString (
HasPrefix = TRUE;
break;
-
case AML_PARENT_PREFIX:
/* Increment past possibly multiple parent prefixes */
@@ -352,7 +351,6 @@ AcpiExGetNameString (
HasPrefix = TRUE;
break;
-
default:
/* Not a prefix character */
@@ -388,7 +386,6 @@ AcpiExGetNameString (
}
break;
-
case AML_MULTI_NAME_PREFIX_OP:
ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "MultiNamePrefix at %p\n",
@@ -420,7 +417,6 @@ AcpiExGetNameString (
break;
-
case 0:
/* NullName valid as of 8-12-98 ASL/AML Grammar Update */
@@ -443,7 +439,6 @@ AcpiExGetNameString (
break;
-
default:
/* Name segment string */
diff --git a/sys/contrib/dev/acpica/components/executer/exoparg1.c b/sys/contrib/dev/acpica/components/executer/exoparg1.c
index 8ce02de..44f06a4 100644
--- a/sys/contrib/dev/acpica/components/executer/exoparg1.c
+++ b/sys/contrib/dev/acpica/components/executer/exoparg1.c
@@ -180,37 +180,31 @@ AcpiExOpcode_1A_0T_0R (
Status = AcpiExReleaseMutex (Operand[0], WalkState);
break;
-
case AML_RESET_OP: /* Reset (EventObject) */
Status = AcpiExSystemResetEvent (Operand[0]);
break;
-
case AML_SIGNAL_OP: /* Signal (EventObject) */
Status = AcpiExSystemSignalEvent (Operand[0]);
break;
-
case AML_SLEEP_OP: /* Sleep (MsecTime) */
Status = AcpiExSystemDoSleep (Operand[0]->Integer.Value);
break;
-
case AML_STALL_OP: /* Stall (UsecTime) */
Status = AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value);
break;
-
case AML_UNLOAD_OP: /* Unload (Handle) */
Status = AcpiExUnloadTable (Operand[0]);
break;
-
default: /* Unknown opcode */
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
@@ -330,7 +324,6 @@ AcpiExOpcode_1A_1T_1R (
ReturnDesc->Integer.Value = ~Operand[0]->Integer.Value;
break;
-
case AML_FIND_SET_LEFT_BIT_OP: /* FindSetLeftBit (Operand, Result) */
ReturnDesc->Integer.Value = Operand[0]->Integer.Value;
@@ -348,7 +341,6 @@ AcpiExOpcode_1A_1T_1R (
ReturnDesc->Integer.Value = Temp32;
break;
-
case AML_FIND_SET_RIGHT_BIT_OP: /* FindSetRightBit (Operand, Result) */
ReturnDesc->Integer.Value = Operand[0]->Integer.Value;
@@ -369,9 +361,7 @@ AcpiExOpcode_1A_1T_1R (
Temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - Temp32;
break;
-
case AML_FROM_BCD_OP: /* FromBcd (BCDValue, Result) */
-
/*
* The 64-bit ACPI integer can hold 16 4-bit BCD characters
* (if table is 32-bit, integer can hold 8 BCD characters)
@@ -416,7 +406,6 @@ AcpiExOpcode_1A_1T_1R (
}
break;
-
case AML_TO_BCD_OP: /* ToBcd (Operand, Result) */
ReturnDesc->Integer.Value = 0;
@@ -448,9 +437,7 @@ AcpiExOpcode_1A_1T_1R (
}
break;
-
case AML_COND_REF_OF_OP: /* CondRefOf (SourceObject, Result) */
-
/*
* This op is a little strange because the internal return value is
* different than the return value stored in the result descriptor
@@ -485,14 +472,14 @@ AcpiExOpcode_1A_1T_1R (
default:
+
/* No other opcodes get here */
+
break;
}
break;
-
case AML_STORE_OP: /* Store (Source, Target) */
-
/*
* A store operand is typically a number, string, buffer or lvalue
* Be careful about deleting the source object,
@@ -519,7 +506,6 @@ AcpiExOpcode_1A_1T_1R (
}
return_ACPI_STATUS (Status);
-
/*
* ACPI 2.0 Opcodes
*/
@@ -529,7 +515,6 @@ AcpiExOpcode_1A_1T_1R (
WalkState);
break;
-
case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */
Status = AcpiExConvertToString (Operand[0], &ReturnDesc,
@@ -541,7 +526,6 @@ AcpiExOpcode_1A_1T_1R (
}
break;
-
case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */
Status = AcpiExConvertToString (Operand[0], &ReturnDesc,
@@ -553,7 +537,6 @@ AcpiExOpcode_1A_1T_1R (
}
break;
-
case AML_TO_BUFFER_OP: /* ToBuffer (Data, Result) */
Status = AcpiExConvertToBuffer (Operand[0], &ReturnDesc);
@@ -564,7 +547,6 @@ AcpiExOpcode_1A_1T_1R (
}
break;
-
case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */
Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc,
@@ -576,7 +558,6 @@ AcpiExOpcode_1A_1T_1R (
}
break;
-
case AML_SHIFT_LEFT_BIT_OP: /* ShiftLeftBit (Source, BitNum) */
case AML_SHIFT_RIGHT_BIT_OP: /* ShiftRightBit (Source, BitNum) */
@@ -588,7 +569,6 @@ AcpiExOpcode_1A_1T_1R (
Status = AE_SUPPORT;
goto Cleanup;
-
default: /* Unknown opcode */
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
@@ -676,10 +656,8 @@ AcpiExOpcode_1A_0T_1R (
}
break;
-
case AML_DECREMENT_OP: /* Decrement (Operand) */
case AML_INCREMENT_OP: /* Increment (Operand) */
-
/*
* Create a new integer. Can't just get the base integer and
* increment it because it may be an Arg or Field.
@@ -744,9 +722,7 @@ AcpiExOpcode_1A_0T_1R (
Status = AcpiExStore (ReturnDesc, Operand[0], WalkState);
break;
-
case AML_TYPE_OP: /* ObjectType (SourceObject) */
-
/*
* Note: The operand is not resolved at this point because we want to
* get the associated object, not its value. For example, we don't
@@ -772,9 +748,7 @@ AcpiExOpcode_1A_0T_1R (
}
break;
-
case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */
-
/*
* Note: The operand is not resolved at this point because we want to
* get the associated object, not its value.
@@ -801,10 +775,12 @@ AcpiExOpcode_1A_0T_1R (
switch (Type)
{
case ACPI_TYPE_INTEGER:
+
Value = AcpiGbl_IntegerByteWidth;
break;
case ACPI_TYPE_STRING:
+
Value = TempDesc->String.Length;
break;
@@ -825,6 +801,7 @@ AcpiExOpcode_1A_0T_1R (
break;
default:
+
ACPI_ERROR ((AE_INFO,
"Operand must be Buffer/Integer/String/Package - found type %s",
AcpiUtGetTypeName (Type)));
@@ -932,9 +909,11 @@ AcpiExOpcode_1A_0T_1R (
break;
case ACPI_TYPE_STRING:
+
break;
default:
+
Status = AE_AML_OPERAND_TYPE;
goto Cleanup;
}
@@ -993,7 +972,6 @@ AcpiExOpcode_1A_0T_1R (
switch (Operand[0]->Reference.Class)
{
case ACPI_REFCLASS_INDEX:
-
/*
* The target type for the Index operator must be
* either a Buffer or a Package
@@ -1025,9 +1003,7 @@ AcpiExOpcode_1A_0T_1R (
}
break;
-
case ACPI_TYPE_PACKAGE:
-
/*
* Return the referenced element of the package. We must
* add another reference to the referenced object, however.
@@ -1039,7 +1015,6 @@ AcpiExOpcode_1A_0T_1R (
}
break;
-
default:
ACPI_ERROR ((AE_INFO,
@@ -1050,7 +1025,6 @@ AcpiExOpcode_1A_0T_1R (
}
break;
-
case ACPI_REFCLASS_REFOF:
ReturnDesc = Operand[0]->Reference.Object;
@@ -1067,8 +1041,8 @@ AcpiExOpcode_1A_0T_1R (
AcpiUtAddReference (ReturnDesc);
break;
-
default:
+
ACPI_ERROR ((AE_INFO,
"Unknown class in reference(%p) - 0x%2.2X",
Operand[0], Operand[0]->Reference.Class));
@@ -1079,7 +1053,6 @@ AcpiExOpcode_1A_0T_1R (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
diff --git a/sys/contrib/dev/acpica/components/executer/exoparg2.c b/sys/contrib/dev/acpica/components/executer/exoparg2.c
index aebc0d3..6f98753 100644
--- a/sys/contrib/dev/acpica/components/executer/exoparg2.c
+++ b/sys/contrib/dev/acpica/components/executer/exoparg2.c
@@ -144,7 +144,6 @@ AcpiExOpcode_2A_0T_0R (
Status = AcpiEvQueueNotifyRequest (Node, Value);
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
@@ -217,7 +216,6 @@ AcpiExOpcode_2A_2T_1R (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
@@ -331,16 +329,13 @@ AcpiExOpcode_2A_1T_1R (
&ReturnDesc->Integer.Value);
break;
-
case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */
Status = AcpiExDoConcatenate (Operand[0], Operand[1],
&ReturnDesc, WalkState);
break;
-
case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */
-
/*
* Input object is guaranteed to be a buffer at this point (it may have
* been converted.) Copy the raw buffer data to a new object of
@@ -380,7 +375,6 @@ AcpiExOpcode_2A_1T_1R (
Operand[0]->Buffer.Pointer, Length);
break;
-
case AML_CONCAT_RES_OP:
/* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */
@@ -389,7 +383,6 @@ AcpiExOpcode_2A_1T_1R (
&ReturnDesc, WalkState);
break;
-
case AML_INDEX_OP: /* Index (Source Index Result) */
/* Create the internal return object */
@@ -479,7 +472,6 @@ AcpiExOpcode_2A_1T_1R (
WalkState->ResultObj = ReturnDesc;
goto Cleanup;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
@@ -602,7 +594,6 @@ AcpiExOpcode_2A_0T_1R (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
diff --git a/sys/contrib/dev/acpica/components/executer/exoparg3.c b/sys/contrib/dev/acpica/components/executer/exoparg3.c
index 5823675..b9c1c1a 100644
--- a/sys/contrib/dev/acpica/components/executer/exoparg3.c
+++ b/sys/contrib/dev/acpica/components/executer/exoparg3.c
@@ -129,7 +129,6 @@ AcpiExOpcode_3A_0T_0R (
ACPI_FREE (Fatal);
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
@@ -176,7 +175,6 @@ AcpiExOpcode_3A_1T_1R (
switch (WalkState->Opcode)
{
case AML_MID_OP: /* Mid (Source[0], Index[1], Length[2], Result[3]) */
-
/*
* Create the return object. The Source operand is guaranteed to be
* either a String or a Buffer, so just use its type.
@@ -268,7 +266,6 @@ AcpiExOpcode_3A_1T_1R (
ReturnDesc->Buffer.Flags |= AOPOBJ_DATA_VALID;
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
diff --git a/sys/contrib/dev/acpica/components/executer/exoparg6.c b/sys/contrib/dev/acpica/components/executer/exoparg6.c
index 41201f3..ae675d3 100644
--- a/sys/contrib/dev/acpica/components/executer/exoparg6.c
+++ b/sys/contrib/dev/acpica/components/executer/exoparg6.c
@@ -130,7 +130,6 @@ AcpiExDoMatch (
break;
case MATCH_MEQ:
-
/*
* True if equal: (P[i] == M)
* Change to: (M == P[i])
@@ -144,7 +143,6 @@ AcpiExDoMatch (
break;
case MATCH_MLE:
-
/*
* True if less than or equal: (P[i] <= M) (P[i] NotGreater than M)
* Change to: (M >= P[i]) (M NotLess than P[i])
@@ -159,7 +157,6 @@ AcpiExDoMatch (
break;
case MATCH_MLT:
-
/*
* True if less than: (P[i] < M)
* Change to: (M > P[i])
@@ -173,7 +170,6 @@ AcpiExDoMatch (
break;
case MATCH_MGE:
-
/*
* True if greater than or equal: (P[i] >= M) (P[i] NotLess than M)
* Change to: (M <= P[i]) (M NotGreater than P[i])
@@ -188,7 +184,6 @@ AcpiExDoMatch (
break;
case MATCH_MGT:
-
/*
* True if greater than: (P[i] > M)
* Change to: (M < P[i])
@@ -328,13 +323,11 @@ AcpiExOpcode_6A_0T_1R (
}
break;
-
case AML_LOAD_TABLE_OP:
Status = AcpiExLoadTableOp (WalkState, &ReturnDesc);
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X",
diff --git a/sys/contrib/dev/acpica/components/executer/exprep.c b/sys/contrib/dev/acpica/components/executer/exprep.c
index 5932205..33c2049 100644
--- a/sys/contrib/dev/acpica/components/executer/exprep.c
+++ b/sys/contrib/dev/acpica/components/executer/exprep.c
@@ -267,26 +267,31 @@ AcpiExDecodeFieldAccess (
case AML_FIELD_ACCESS_BYTE:
case AML_FIELD_ACCESS_BUFFER: /* ACPI 2.0 (SMBus Buffer) */
+
ByteAlignment = 1;
BitLength = 8;
break;
case AML_FIELD_ACCESS_WORD:
+
ByteAlignment = 2;
BitLength = 16;
break;
case AML_FIELD_ACCESS_DWORD:
+
ByteAlignment = 4;
BitLength = 32;
break;
case AML_FIELD_ACCESS_QWORD: /* ACPI 2.0 */
+
ByteAlignment = 8;
BitLength = 64;
break;
default:
+
/* Invalid field access type */
ACPI_ERROR ((AE_INFO,
@@ -536,7 +541,6 @@ AcpiExPrepFieldValue (
ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj));
break;
-
case ACPI_TYPE_LOCAL_BANK_FIELD:
ObjDesc->BankField.Value = Info->BankValue;
@@ -571,7 +575,6 @@ AcpiExPrepFieldValue (
break;
-
case ACPI_TYPE_LOCAL_INDEX_FIELD:
/* Get the Index and Data registers */
@@ -625,7 +628,9 @@ AcpiExPrepFieldValue (
break;
default:
+
/* No other types should get here */
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/executer/exregion.c b/sys/contrib/dev/acpica/components/executer/exregion.c
index bc3417a..753cba6 100644
--- a/sys/contrib/dev/acpica/components/executer/exregion.c
+++ b/sys/contrib/dev/acpica/components/executer/exregion.c
@@ -99,22 +99,27 @@ AcpiExSystemMemorySpaceHandler (
switch (BitWidth)
{
case 8:
+
Length = 1;
break;
case 16:
+
Length = 2;
break;
case 32:
+
Length = 4;
break;
case 64:
+
Length = 8;
break;
default:
+
ACPI_ERROR ((AE_INFO, "Invalid SystemMemory width %u",
BitWidth));
return_ACPI_STATUS (AE_AML_OPERAND_VALUE);
@@ -231,23 +236,29 @@ AcpiExSystemMemorySpaceHandler (
switch (BitWidth)
{
case 8:
+
*Value = (UINT64) ACPI_GET8 (LogicalAddrPtr);
break;
case 16:
+
*Value = (UINT64) ACPI_GET16 (LogicalAddrPtr);
break;
case 32:
+
*Value = (UINT64) ACPI_GET32 (LogicalAddrPtr);
break;
case 64:
+
*Value = (UINT64) ACPI_GET64 (LogicalAddrPtr);
break;
default:
+
/* BitWidth was already validated */
+
break;
}
break;
@@ -257,28 +268,35 @@ AcpiExSystemMemorySpaceHandler (
switch (BitWidth)
{
case 8:
+
ACPI_SET8 (LogicalAddrPtr, *Value);
break;
case 16:
+
ACPI_SET16 (LogicalAddrPtr, *Value);
break;
case 32:
+
ACPI_SET32 (LogicalAddrPtr, *Value);
break;
case 64:
+
ACPI_SET64 (LogicalAddrPtr, *Value);
break;
default:
+
/* BitWidth was already validated */
+
break;
}
break;
default:
+
Status = AE_BAD_PARAMETER;
break;
}
@@ -343,6 +361,7 @@ AcpiExSystemIoSpaceHandler (
break;
default:
+
Status = AE_BAD_PARAMETER;
break;
}
diff --git a/sys/contrib/dev/acpica/components/executer/exresnte.c b/sys/contrib/dev/acpica/components/executer/exresnte.c
index c8937ec..267801c 100644
--- a/sys/contrib/dev/acpica/components/executer/exresnte.c
+++ b/sys/contrib/dev/acpica/components/executer/exresnte.c
@@ -164,7 +164,6 @@ AcpiExResolveNodeToValue (
}
break;
-
case ACPI_TYPE_BUFFER:
if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER)
@@ -184,7 +183,6 @@ AcpiExResolveNodeToValue (
}
break;
-
case ACPI_TYPE_STRING:
if (SourceDesc->Common.Type != ACPI_TYPE_STRING)
@@ -200,7 +198,6 @@ AcpiExResolveNodeToValue (
AcpiUtAddReference (ObjDesc);
break;
-
case ACPI_TYPE_INTEGER:
if (SourceDesc->Common.Type != ACPI_TYPE_INTEGER)
@@ -216,7 +213,6 @@ AcpiExResolveNodeToValue (
AcpiUtAddReference (ObjDesc);
break;
-
case ACPI_TYPE_BUFFER_FIELD:
case ACPI_TYPE_LOCAL_REGION_FIELD:
case ACPI_TYPE_LOCAL_BANK_FIELD:
@@ -252,7 +248,6 @@ AcpiExResolveNodeToValue (
return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */
-
case ACPI_TYPE_LOCAL_REFERENCE:
switch (SourceDesc->Reference.Class)
@@ -268,6 +263,7 @@ AcpiExResolveNodeToValue (
break;
default:
+
/* No named references are allowed here */
ACPI_ERROR ((AE_INFO,
@@ -278,7 +274,6 @@ AcpiExResolveNodeToValue (
}
break;
-
default:
/* Default case is for unknown types */
diff --git a/sys/contrib/dev/acpica/components/executer/exresolv.c b/sys/contrib/dev/acpica/components/executer/exresolv.c
index 74a1b73..837ba87 100644
--- a/sys/contrib/dev/acpica/components/executer/exresolv.c
+++ b/sys/contrib/dev/acpica/components/executer/exresolv.c
@@ -176,7 +176,6 @@ AcpiExResolveObjectToValue (
{
case ACPI_REFCLASS_LOCAL:
case ACPI_REFCLASS_ARG:
-
/*
* Get the local from the method's state info
* Note: this increments the local's object reference count
@@ -199,7 +198,6 @@ AcpiExResolveObjectToValue (
*StackPtr = ObjDesc;
break;
-
case ACPI_REFCLASS_INDEX:
switch (StackDesc->Reference.TargetType)
@@ -209,7 +207,6 @@ AcpiExResolveObjectToValue (
/* Just return - do not dereference */
break;
-
case ACPI_TYPE_PACKAGE:
/* If method call or CopyObject - do not dereference */
@@ -247,7 +244,6 @@ AcpiExResolveObjectToValue (
}
break;
-
default:
/* Invalid reference object */
@@ -260,7 +256,6 @@ AcpiExResolveObjectToValue (
}
break;
-
case ACPI_REFCLASS_REFOF:
case ACPI_REFCLASS_DEBUG:
case ACPI_REFCLASS_TABLE:
@@ -300,19 +295,16 @@ AcpiExResolveObjectToValue (
}
break;
-
case ACPI_TYPE_BUFFER:
Status = AcpiDsGetBufferArguments (StackDesc);
break;
-
case ACPI_TYPE_PACKAGE:
Status = AcpiDsGetPackageArguments (StackDesc);
break;
-
case ACPI_TYPE_BUFFER_FIELD:
case ACPI_TYPE_LOCAL_REGION_FIELD:
case ACPI_TYPE_LOCAL_BANK_FIELD:
@@ -330,6 +322,7 @@ AcpiExResolveObjectToValue (
break;
default:
+
break;
}
@@ -374,10 +367,12 @@ AcpiExResolveMultiple (
switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))
{
case ACPI_DESC_TYPE_OPERAND:
+
Type = ObjDesc->Common.Type;
break;
case ACPI_DESC_TYPE_NAMED:
+
Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type;
ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc);
@@ -454,7 +449,6 @@ AcpiExResolveMultiple (
}
break;
-
case ACPI_REFCLASS_INDEX:
/* Get the type of this reference (index into another object) */
@@ -482,13 +476,11 @@ AcpiExResolveMultiple (
}
break;
-
case ACPI_REFCLASS_TABLE:
Type = ACPI_TYPE_DDB_HANDLE;
goto Exit;
-
case ACPI_REFCLASS_LOCAL:
case ACPI_REFCLASS_ARG:
@@ -520,7 +512,6 @@ AcpiExResolveMultiple (
}
break;
-
case ACPI_REFCLASS_DEBUG:
/* The Debug Object is of type "DebugObject" */
@@ -528,7 +519,6 @@ AcpiExResolveMultiple (
Type = ACPI_TYPE_DEBUG_OBJECT;
goto Exit;
-
default:
ACPI_ERROR ((AE_INFO,
@@ -564,7 +554,9 @@ Exit:
break;
default:
+
/* No change to Type required */
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/executer/exresop.c b/sys/contrib/dev/acpica/components/executer/exresop.c
index 0b7af01..24df299 100644
--- a/sys/contrib/dev/acpica/components/executer/exresop.c
+++ b/sys/contrib/dev/acpica/components/executer/exresop.c
@@ -224,7 +224,6 @@ AcpiExResolveOperands (
}
break;
-
case ACPI_DESC_TYPE_OPERAND:
/* ACPI internal object */
@@ -277,7 +276,6 @@ AcpiExResolveOperands (
}
break;
-
default:
/* Invalid descriptor */
@@ -324,7 +322,6 @@ AcpiExResolveOperands (
case ARGI_TARGETREF: /* Allows implicit conversion rules before store */
case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */
case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */
-
/*
* Need an operand of type ACPI_TYPE_LOCAL_REFERENCE
* A Namespace Node is OK as-is
@@ -342,9 +339,7 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_DATAREFOBJ: /* Store operator only */
-
/*
* We don't want to resolve IndexOp reference objects during
* a store because this would be an implicit DeRefOf operation.
@@ -360,7 +355,9 @@ AcpiExResolveOperands (
break;
default:
+
/* All cases covered above */
+
break;
}
@@ -453,9 +450,7 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_BUFFER:
-
/*
* Need an operand of type ACPI_TYPE_BUFFER,
* But we can implicitly convert from a STRING or INTEGER
@@ -482,9 +477,7 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_STRING:
-
/*
* Need an operand of type ACPI_TYPE_STRING,
* But we can implicitly convert from a BUFFER or INTEGER
@@ -512,7 +505,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_COMPUTEDATA:
/* Need an operand of type INTEGER, STRING or BUFFER */
@@ -535,7 +527,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_BUFFER_OR_STRING:
/* Need an operand of type STRING or BUFFER */
@@ -573,7 +564,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_DATAOBJECT:
/*
* ARGI_DATAOBJECT is only used by the SizeOf operator.
@@ -593,6 +583,7 @@ AcpiExResolveOperands (
break;
default:
+
ACPI_ERROR ((AE_INFO,
"Needed [Buffer/String/Package/Reference], found [%s] %p",
AcpiUtGetObjectTypeName (ObjDesc), ObjDesc));
@@ -601,7 +592,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_COMPLEXOBJ:
/* Need a buffer or package or (ACPI 2.0) String */
@@ -616,6 +606,7 @@ AcpiExResolveOperands (
break;
default:
+
ACPI_ERROR ((AE_INFO,
"Needed [Buffer/String/Package], found [%s] %p",
AcpiUtGetObjectTypeName (ObjDesc), ObjDesc));
@@ -624,7 +615,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_REGION_OR_BUFFER: /* Used by Load() only */
/* Need an operand of type REGION or a BUFFER (which could be a resolved region field) */
@@ -638,6 +628,7 @@ AcpiExResolveOperands (
break;
default:
+
ACPI_ERROR ((AE_INFO,
"Needed [Region/Buffer], found [%s] %p",
AcpiUtGetObjectTypeName (ObjDesc), ObjDesc));
@@ -646,7 +637,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
case ARGI_DATAREFOBJ:
/* Used by the Store() operator only */
@@ -694,7 +684,6 @@ AcpiExResolveOperands (
}
goto NextOperand;
-
default:
/* Unknown type */
diff --git a/sys/contrib/dev/acpica/components/executer/exstore.c b/sys/contrib/dev/acpica/components/executer/exstore.c
index ae842d2..894af0b 100644
--- a/sys/contrib/dev/acpica/components/executer/exstore.c
+++ b/sys/contrib/dev/acpica/components/executer/exstore.c
@@ -124,6 +124,7 @@ AcpiExStore (
switch (DestDesc->Common.Type)
{
case ACPI_TYPE_LOCAL_REFERENCE:
+
break;
case ACPI_TYPE_INTEGER:
@@ -167,7 +168,6 @@ AcpiExStore (
WalkState, ACPI_IMPLICIT_CONVERSION);
break;
-
case ACPI_REFCLASS_INDEX:
/* Storing to an Index (pointer into a packager or buffer) */
@@ -175,7 +175,6 @@ AcpiExStore (
Status = AcpiExStoreObjectToIndex (SourceDesc, RefDesc, WalkState);
break;
-
case ACPI_REFCLASS_LOCAL:
case ACPI_REFCLASS_ARG:
@@ -185,9 +184,7 @@ AcpiExStore (
RefDesc->Reference.Value, SourceDesc, WalkState);
break;
-
case ACPI_REFCLASS_DEBUG:
-
/*
* Storing to the Debug object causes the value stored to be
* displayed and otherwise has no effect -- see ACPI Specification
@@ -199,7 +196,6 @@ AcpiExStore (
ACPI_DEBUG_OBJECT (SourceDesc, 0, 0);
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X",
@@ -308,9 +304,7 @@ AcpiExStoreObjectToIndex (
break;
-
case ACPI_TYPE_BUFFER_FIELD:
-
/*
* Store into a Buffer or String (not actually a real BufferField)
* at a location defined by an Index.
@@ -368,7 +362,6 @@ AcpiExStoreObjectToIndex (
ObjDesc->Buffer.Pointer[IndexDesc->Reference.Value] = Value;
break;
-
default:
ACPI_ERROR ((AE_INFO,
"Target is not a Package or BufferField"));
@@ -473,11 +466,9 @@ AcpiExStoreObjectToNode (
&WalkState->ResultObj);
break;
-
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
-
/*
* These target types are all of type Integer/String/Buffer, and
* therefore support implicit conversion before the store.
@@ -511,7 +502,6 @@ AcpiExStoreObjectToNode (
}
break;
-
default:
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
diff --git a/sys/contrib/dev/acpica/components/executer/exstoren.c b/sys/contrib/dev/acpica/components/executer/exstoren.c
index a8ae148..c0302c1 100644
--- a/sys/contrib/dev/acpica/components/executer/exstoren.c
+++ b/sys/contrib/dev/acpica/components/executer/exstoren.c
@@ -94,11 +94,9 @@ AcpiExResolveObject (
* These cases all require only Integers or values that
* can be converted to Integers (Strings or Buffers)
*/
-
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_STRING:
case ACPI_TYPE_BUFFER:
-
/*
* Stores into a Field/Region or into a Integer/Buffer/String
* are all essentially the same. This case handles the
@@ -140,10 +138,8 @@ AcpiExResolveObject (
}
break;
-
case ACPI_TYPE_LOCAL_ALIAS:
case ACPI_TYPE_LOCAL_METHOD_ALIAS:
-
/*
* All aliases should have been resolved earlier, during the
* operand resolution phase.
@@ -152,10 +148,8 @@ AcpiExResolveObject (
Status = AE_AML_INTERNAL;
break;
-
case ACPI_TYPE_PACKAGE:
default:
-
/*
* All other types than Alias and the various Fields come here,
* including the untyped case - ACPI_TYPE_ANY.
diff --git a/sys/contrib/dev/acpica/components/hardware/hwacpi.c b/sys/contrib/dev/acpica/components/hardware/hwacpi.c
index f68e709..3cd3a44 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwacpi.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwacpi.c
@@ -120,7 +120,6 @@ AcpiHwSetMode (
break;
case ACPI_SYS_MODE_LEGACY:
-
/*
* BIOS should clear all fixed status bits and restore fixed event
* enable bits to default
@@ -132,6 +131,7 @@ AcpiHwSetMode (
break;
default:
+
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/components/hardware/hwgpe.c b/sys/contrib/dev/acpica/components/hardware/hwgpe.c
index c08ce2e..99c0de6 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwgpe.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwgpe.c
@@ -142,14 +142,17 @@ AcpiHwLowSetGpe (
/*lint -fallthrough */
case ACPI_GPE_ENABLE:
+
ACPI_SET_BIT (EnableMask, RegisterBit);
break;
case ACPI_GPE_DISABLE:
+
ACPI_CLEAR_BIT (EnableMask, RegisterBit);
break;
default:
+
ACPI_ERROR ((AE_INFO, "Invalid GPE Action, %u", Action));
return (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/components/hardware/hwregs.c b/sys/contrib/dev/acpica/components/hardware/hwregs.c
index 8a7775b..9c3f2a9 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwregs.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwregs.c
@@ -430,7 +430,6 @@ AcpiHwRegisterRead (
&AcpiGbl_XPm1bStatus);
break;
-
case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */
Status = AcpiHwReadMultiple (&Value,
@@ -438,7 +437,6 @@ AcpiHwRegisterRead (
&AcpiGbl_XPm1bEnable);
break;
-
case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */
Status = AcpiHwReadMultiple (&Value,
@@ -453,26 +451,23 @@ AcpiHwRegisterRead (
Value &= ~ACPI_PM1_CONTROL_WRITEONLY_BITS;
break;
-
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPm2ControlBlock);
break;
-
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPmTimerBlock);
break;
-
case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */
Status = AcpiHwReadPort (AcpiGbl_FADT.SmiCommand, &Value, 8);
break;
-
default:
+
ACPI_ERROR ((AE_INFO, "Unknown Register ID: 0x%X",
RegisterId));
Status = AE_BAD_PARAMETER;
@@ -546,7 +541,6 @@ AcpiHwRegisterWrite (
&AcpiGbl_XPm1bStatus);
break;
-
case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */
Status = AcpiHwWriteMultiple (Value,
@@ -554,9 +548,7 @@ AcpiHwRegisterWrite (
&AcpiGbl_XPm1bEnable);
break;
-
case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */
-
/*
* Perform a read first to preserve certain bits (per ACPI spec)
* Note: This includes SCI_EN, we never want to change this bit
@@ -580,9 +572,7 @@ AcpiHwRegisterWrite (
&AcpiGbl_FADT.XPm1bControlBlock);
break;
-
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
-
/*
* For control registers, all reserved bits must be preserved,
* as per the ACPI spec.
@@ -600,13 +590,11 @@ AcpiHwRegisterWrite (
Status = AcpiHwWrite (Value, &AcpiGbl_FADT.XPm2ControlBlock);
break;
-
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
Status = AcpiHwWrite (Value, &AcpiGbl_FADT.XPmTimerBlock);
break;
-
case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */
/* SMI_CMD is currently always in IO space */
@@ -614,8 +602,8 @@ AcpiHwRegisterWrite (
Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, Value, 8);
break;
-
default:
+
ACPI_ERROR ((AE_INFO, "Unknown Register ID: 0x%X",
RegisterId));
Status = AE_BAD_PARAMETER;
diff --git a/sys/contrib/dev/acpica/components/hardware/hwxface.c b/sys/contrib/dev/acpica/components/hardware/hwxface.c
index eccec6b..ded0a6b 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwxface.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwxface.c
@@ -592,10 +592,12 @@ AcpiGetSleepTypeData (
switch (Info->ReturnObject->Package.Count)
{
case 0:
+
Status = AE_AML_PACKAGE_LIMIT;
break;
case 1:
+
if (Elements[0]->Common.Type != ACPI_TYPE_INTEGER)
{
Status = AE_AML_OPERAND_TYPE;
@@ -610,6 +612,7 @@ AcpiGetSleepTypeData (
case 2:
default:
+
if ((Elements[0]->Common.Type != ACPI_TYPE_INTEGER) ||
(Elements[1]->Common.Type != ACPI_TYPE_INTEGER))
{
diff --git a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
index 3643799..8c3ec41 100644
--- a/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
+++ b/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c
@@ -267,13 +267,14 @@ AcpiHwSleepDispatch (
#if (!ACPI_REDUCED_HARDWARE)
-
/*
* If the Hardware Reduced flag is set (from the FADT), we must
- * use the extended sleep registers
+ * use the extended sleep registers (FADT). Note: As per the ACPI
+ * specification, these extended registers are to be used for HW-reduced
+ * platforms only. They are not general-purpose replacements for the
+ * legacy PM register sleep support.
*/
- if (AcpiGbl_ReducedHardware ||
- AcpiGbl_FADT.SleepControl.Address)
+ if (AcpiGbl_ReducedHardware)
{
Status = SleepFunctions->ExtendedFunction (SleepState);
}
@@ -351,20 +352,24 @@ AcpiEnterSleepStatePrep (
switch (SleepState)
{
case ACPI_STATE_S0:
+
SstValue = ACPI_SST_WORKING;
break;
case ACPI_STATE_S1:
case ACPI_STATE_S2:
case ACPI_STATE_S3:
+
SstValue = ACPI_SST_SLEEPING;
break;
case ACPI_STATE_S4:
+
SstValue = ACPI_SST_SLEEP_CONTEXT;
break;
default:
+
SstValue = ACPI_SST_INDICATOR_OFF; /* Default is off */
break;
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsaccess.c b/sys/contrib/dev/acpica/components/namespace/nsaccess.c
index 8dc8b5f..aedb550 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsaccess.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsaccess.c
@@ -167,6 +167,7 @@ AcpiNsRootInitialize (
switch (InitVal->Type)
{
case ACPI_TYPE_METHOD:
+
ObjDesc->Method.ParamCount = (UINT8) ACPI_TO_INTEGER (Val);
ObjDesc->Common.Flags |= AOPOBJ_DATA_VALID;
@@ -188,7 +189,6 @@ AcpiNsRootInitialize (
ObjDesc->Integer.Value = ACPI_TO_INTEGER (Val);
break;
-
case ACPI_TYPE_STRING:
/* Build an object around the static string */
@@ -198,7 +198,6 @@ AcpiNsRootInitialize (
ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER;
break;
-
case ACPI_TYPE_MUTEX:
ObjDesc->Mutex.Node = NewNode;
@@ -231,7 +230,6 @@ AcpiNsRootInitialize (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Unsupported initial type value 0x%X",
diff --git a/sys/contrib/dev/acpica/components/namespace/nsconvert.c b/sys/contrib/dev/acpica/components/namespace/nsconvert.c
index ed6f885..4b12d3d 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsconvert.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsconvert.c
@@ -111,6 +111,7 @@ AcpiNsConvertToInteger (
break;
default:
+
return (AE_AML_OPERAND_TYPE);
}
@@ -208,6 +209,7 @@ AcpiNsConvertToString (
break;
default:
+
return (AE_AML_OPERAND_TYPE);
}
@@ -317,6 +319,7 @@ AcpiNsConvertToBuffer (
break;
default:
+
return (AE_AML_OPERAND_TYPE);
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsdump.c b/sys/contrib/dev/acpica/components/namespace/nsdump.c
index 1411534..e5cd380 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsdump.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsdump.c
@@ -282,10 +282,12 @@ AcpiNsDumpOneObject (
case ACPI_TYPE_BUFFER:
case ACPI_TYPE_STRING:
case ACPI_TYPE_METHOD:
+
AcpiOsPrintf ("<No attached object>");
break;
default:
+
break;
}
@@ -302,13 +304,11 @@ AcpiNsDumpOneObject (
ACPI_CAST_PTR (void, ObjDesc->Processor.Address));
break;
-
case ACPI_TYPE_DEVICE:
AcpiOsPrintf ("Notify Object: %p\n", ObjDesc);
break;
-
case ACPI_TYPE_METHOD:
AcpiOsPrintf ("Args %X Len %.4X Aml %p\n",
@@ -316,14 +316,12 @@ AcpiNsDumpOneObject (
ObjDesc->Method.AmlLength, ObjDesc->Method.AmlStart);
break;
-
case ACPI_TYPE_INTEGER:
AcpiOsPrintf ("= %8.8X%8.8X\n",
ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
break;
-
case ACPI_TYPE_PACKAGE:
if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)
@@ -337,7 +335,6 @@ AcpiNsDumpOneObject (
}
break;
-
case ACPI_TYPE_BUFFER:
if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)
@@ -363,7 +360,6 @@ AcpiNsDumpOneObject (
}
break;
-
case ACPI_TYPE_STRING:
AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length);
@@ -371,7 +367,6 @@ AcpiNsDumpOneObject (
AcpiOsPrintf ("\n");
break;
-
case ACPI_TYPE_REGION:
AcpiOsPrintf ("[%s]",
@@ -388,13 +383,11 @@ AcpiNsDumpOneObject (
}
break;
-
case ACPI_TYPE_LOCAL_REFERENCE:
AcpiOsPrintf ("[%s]\n", AcpiUtGetReferenceName (ObjDesc));
break;
-
case ACPI_TYPE_BUFFER_FIELD:
if (ObjDesc->BufferField.BufferObj &&
@@ -406,7 +399,6 @@ AcpiNsDumpOneObject (
}
break;
-
case ACPI_TYPE_LOCAL_REGION_FIELD:
AcpiOsPrintf ("Rgn [%4.4s]",
@@ -414,7 +406,6 @@ AcpiNsDumpOneObject (
ObjDesc->CommonField.RegionObj->Region.Node));
break;
-
case ACPI_TYPE_LOCAL_BANK_FIELD:
AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]",
@@ -424,7 +415,6 @@ AcpiNsDumpOneObject (
ObjDesc->BankField.BankObj->CommonField.Node));
break;
-
case ACPI_TYPE_LOCAL_INDEX_FIELD:
AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]",
@@ -434,7 +424,6 @@ AcpiNsDumpOneObject (
ObjDesc->IndexField.DataObj->CommonField.Node));
break;
-
case ACPI_TYPE_LOCAL_ALIAS:
case ACPI_TYPE_LOCAL_METHOD_ALIAS:
@@ -465,11 +454,11 @@ AcpiNsDumpOneObject (
break;
default:
+
break;
}
break;
-
case ACPI_DISPLAY_OBJECTS:
AcpiOsPrintf ("O:%p", ObjDesc);
@@ -518,7 +507,6 @@ AcpiNsDumpOneObject (
}
break;
-
default:
AcpiOsPrintf ("\n");
break;
@@ -605,30 +593,37 @@ AcpiNsDumpOneObject (
goto Cleanup;
case ACPI_TYPE_BUFFER_FIELD:
+
ObjDesc = (ACPI_OPERAND_OBJECT *) ObjDesc->BufferField.BufferObj;
break;
case ACPI_TYPE_PACKAGE:
+
ObjDesc = (void *) ObjDesc->Package.Elements;
break;
case ACPI_TYPE_METHOD:
+
ObjDesc = (void *) ObjDesc->Method.AmlStart;
break;
case ACPI_TYPE_LOCAL_REGION_FIELD:
+
ObjDesc = (void *) ObjDesc->Field.RegionObj;
break;
case ACPI_TYPE_LOCAL_BANK_FIELD:
+
ObjDesc = (void *) ObjDesc->BankField.RegionObj;
break;
case ACPI_TYPE_LOCAL_INDEX_FIELD:
+
ObjDesc = (void *) ObjDesc->IndexField.IndexObj;
break;
default:
+
goto Cleanup;
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsinit.c b/sys/contrib/dev/acpica/components/namespace/nsinit.c
index adbe9de..cd50447 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsinit.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsinit.c
@@ -296,28 +296,34 @@ AcpiNsInitOneObject (
switch (Type)
{
case ACPI_TYPE_REGION:
+
Info->OpRegionCount++;
break;
case ACPI_TYPE_BUFFER_FIELD:
+
Info->FieldCount++;
break;
case ACPI_TYPE_LOCAL_BANK_FIELD:
+
Info->FieldCount++;
break;
case ACPI_TYPE_BUFFER:
+
Info->BufferCount++;
break;
case ACPI_TYPE_PACKAGE:
+
Info->PackageCount++;
break;
default:
/* No init required, just exit now */
+
return (AE_OK);
}
@@ -369,7 +375,9 @@ AcpiNsInitOneObject (
break;
default:
+
/* No other types can get here */
+
break;
}
@@ -456,6 +464,7 @@ AcpiNsFindIniMethods (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nspredef.c b/sys/contrib/dev/acpica/components/namespace/nspredef.c
index 2de8f41..8f07293 100644
--- a/sys/contrib/dev/acpica/components/namespace/nspredef.c
+++ b/sys/contrib/dev/acpica/components/namespace/nspredef.c
@@ -175,7 +175,13 @@ AcpiNsCheckReturnValue (
Status = AcpiNsCheckPackage (Info, ReturnObjectPtr);
if (ACPI_FAILURE (Status))
{
- goto Exit;
+ /* We might be able to fix some errors */
+
+ if ((Status != AE_AML_OPERAND_TYPE) &&
+ (Status != AE_AML_OPERAND_VALUE))
+ {
+ goto Exit;
+ }
}
}
@@ -377,26 +383,32 @@ AcpiNsGetBitmappedType (
switch (ReturnObject->Common.Type)
{
case ACPI_TYPE_INTEGER:
+
ReturnBtype = ACPI_RTYPE_INTEGER;
break;
case ACPI_TYPE_BUFFER:
+
ReturnBtype = ACPI_RTYPE_BUFFER;
break;
case ACPI_TYPE_STRING:
+
ReturnBtype = ACPI_RTYPE_STRING;
break;
case ACPI_TYPE_PACKAGE:
+
ReturnBtype = ACPI_RTYPE_PACKAGE;
break;
case ACPI_TYPE_LOCAL_REFERENCE:
+
ReturnBtype = ACPI_RTYPE_REFERENCE;
break;
default:
+
/* Not one of the supported objects, must be incorrect */
ReturnBtype = ACPI_RTYPE_ANY;
diff --git a/sys/contrib/dev/acpica/components/namespace/nsprepkg.c b/sys/contrib/dev/acpica/components/namespace/nsprepkg.c
index 1e46f6a..cccd2c1 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsprepkg.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsprepkg.c
@@ -149,7 +149,6 @@ AcpiNsCheckPackage (
switch (Package->RetInfo.Type)
{
case ACPI_PTYPE1_FIXED:
-
/*
* The package count is fixed and there are no sub-packages
*
@@ -176,9 +175,7 @@ AcpiNsCheckPackage (
Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0);
break;
-
case ACPI_PTYPE1_VAR:
-
/*
* The package count is variable, there are no sub-packages, and all
* elements must be of the same type
@@ -195,9 +192,7 @@ AcpiNsCheckPackage (
}
break;
-
case ACPI_PTYPE1_OPTION:
-
/*
* The package count is variable, there are no sub-packages. There are
* a fixed number of required elements, and a variable number of
@@ -241,7 +236,6 @@ AcpiNsCheckPackage (
}
break;
-
case ACPI_PTYPE2_REV_FIXED:
/* First element is the (Integer) revision */
@@ -261,7 +255,6 @@ AcpiNsCheckPackage (
Status = AcpiNsCheckPackageList (Info, Package, Elements, Count);
break;
-
case ACPI_PTYPE2_PKG_COUNT:
/* First element is the (Integer) count of sub-packages to follow */
@@ -291,13 +284,11 @@ AcpiNsCheckPackage (
Status = AcpiNsCheckPackageList (Info, Package, Elements, Count);
break;
-
case ACPI_PTYPE2:
case ACPI_PTYPE2_FIXED:
case ACPI_PTYPE2_MIN:
case ACPI_PTYPE2_COUNT:
case ACPI_PTYPE2_FIX_VAR:
-
/*
* These types all return a single Package that consists of a
* variable number of sub-Packages.
@@ -330,7 +321,6 @@ AcpiNsCheckPackage (
Status = AcpiNsCheckPackageList (Info, Package, Elements, Count);
break;
-
default:
/* Should not get here if predefined info table is correct */
@@ -438,7 +428,6 @@ AcpiNsCheckPackageList (
}
break;
-
case ACPI_PTYPE2_FIX_VAR:
/*
* Each subpackage has a fixed number of elements and an
@@ -461,7 +450,6 @@ AcpiNsCheckPackageList (
}
break;
-
case ACPI_PTYPE2_FIXED:
/* Each sub-package has a fixed length */
@@ -485,7 +473,6 @@ AcpiNsCheckPackageList (
}
break;
-
case ACPI_PTYPE2_MIN:
/* Each sub-package has a variable but minimum length */
@@ -507,9 +494,7 @@ AcpiNsCheckPackageList (
}
break;
-
case ACPI_PTYPE2_COUNT:
-
/*
* First element is the (Integer) count of elements, including
* the count field (the ACPI name is NumElements)
@@ -558,7 +543,6 @@ AcpiNsCheckPackageList (
}
break;
-
default: /* Should not get here, type was validated by caller */
return (AE_AML_INTERNAL);
diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair.c b/sys/contrib/dev/acpica/components/namespace/nsrepair.c
index 4e0f55d..879c95a 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsrepair.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsrepair.c
@@ -510,6 +510,7 @@ AcpiNsRemoveNullElements (
case ACPI_PTYPE2_MIN:
case ACPI_PTYPE2_REV_FIXED:
case ACPI_PTYPE2_FIX_VAR:
+
break;
default:
diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
index 7486dd7..85379e6 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
@@ -86,6 +86,11 @@ AcpiNsRepair_CID (
ACPI_OPERAND_OBJECT **ReturnObjectPtr);
static ACPI_STATUS
+AcpiNsRepair_CST (
+ ACPI_EVALUATE_INFO *Info,
+ ACPI_OPERAND_OBJECT **ReturnObjectPtr);
+
+static ACPI_STATUS
AcpiNsRepair_FDE (
ACPI_EVALUATE_INFO *Info,
ACPI_OPERAND_OBJECT **ReturnObjectPtr);
@@ -96,6 +101,11 @@ AcpiNsRepair_HID (
ACPI_OPERAND_OBJECT **ReturnObjectPtr);
static ACPI_STATUS
+AcpiNsRepair_PRT (
+ ACPI_EVALUATE_INFO *Info,
+ ACPI_OPERAND_OBJECT **ReturnObjectPtr);
+
+static ACPI_STATUS
AcpiNsRepair_PSS (
ACPI_EVALUATE_INFO *Info,
ACPI_OPERAND_OBJECT **ReturnObjectPtr);
@@ -109,11 +119,22 @@ static ACPI_STATUS
AcpiNsCheckSortedList (
ACPI_EVALUATE_INFO *Info,
ACPI_OPERAND_OBJECT *ReturnObject,
+ UINT32 StartIndex,
UINT32 ExpectedCount,
UINT32 SortIndex,
UINT8 SortDirection,
char *SortKeyName);
+/* Values for SortDirection above */
+
+#define ACPI_SORT_ASCENDING 0
+#define ACPI_SORT_DESCENDING 1
+
+static void
+AcpiNsRemoveElement (
+ ACPI_OPERAND_OBJECT *ObjDesc,
+ UINT32 Index);
+
static void
AcpiNsSortList (
ACPI_OPERAND_OBJECT **Elements,
@@ -121,11 +142,6 @@ AcpiNsSortList (
UINT32 Index,
UINT8 SortDirection);
-/* Values for SortDirection above */
-
-#define ACPI_SORT_ASCENDING 0
-#define ACPI_SORT_DESCENDING 1
-
/*
* This table contains the names of the predefined methods for which we can
@@ -135,9 +151,11 @@ AcpiNsSortList (
*
* _ALR: Sort the list ascending by AmbientIlluminance
* _CID: Strings: uppercase all, remove any leading asterisk
+ * _CST: Sort the list ascending by C state type
* _FDE: Convert Buffer of BYTEs to a Buffer of DWORDs
* _GTM: Convert Buffer of BYTEs to a Buffer of DWORDs
* _HID: Strings: uppercase all, remove any leading asterisk
+ * _PRT: Fix reversed SourceName and SourceIndex
* _PSS: Sort the list descending by Power
* _TSS: Sort the list descending by Power
*
@@ -152,9 +170,11 @@ static const ACPI_REPAIR_INFO AcpiNsRepairableNames[] =
{
{"_ALR", AcpiNsRepair_ALR},
{"_CID", AcpiNsRepair_CID},
+ {"_CST", AcpiNsRepair_CST},
{"_FDE", AcpiNsRepair_FDE},
{"_GTM", AcpiNsRepair_FDE}, /* _GTM has same repair as _FDE */
{"_HID", AcpiNsRepair_HID},
+ {"_PRT", AcpiNsRepair_PRT},
{"_PSS", AcpiNsRepair_PSS},
{"_TSS", AcpiNsRepair_TSS},
{{0,0,0,0}, NULL} /* Table terminator */
@@ -267,7 +287,7 @@ AcpiNsRepair_ALR (
ACPI_STATUS Status;
- Status = AcpiNsCheckSortedList (Info, ReturnObject, 2, 1,
+ Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 2, 1,
ACPI_SORT_ASCENDING, "AmbientIlluminance");
return (Status);
@@ -354,6 +374,7 @@ AcpiNsRepair_FDE (
break;
default:
+
return (AE_AML_OPERAND_TYPE);
}
@@ -446,6 +467,97 @@ AcpiNsRepair_CID (
/******************************************************************************
*
+ * FUNCTION: AcpiNsRepair_CST
+ *
+ * PARAMETERS: Info - Method execution information block
+ * ReturnObjectPtr - Pointer to the object returned from the
+ * evaluation of a method or object
+ *
+ * RETURN: Status. AE_OK if object is OK or was repaired successfully
+ *
+ * DESCRIPTION: Repair for the _CST object:
+ * 1. Sort the list ascending by C state type
+ * 2. Ensure type cannot be zero
+ * 3. A sub-package count of zero means _CST is meaningless
+ * 4. Count must match the number of C state sub-packages
+ *
+ *****************************************************************************/
+
+static ACPI_STATUS
+AcpiNsRepair_CST (
+ ACPI_EVALUATE_INFO *Info,
+ ACPI_OPERAND_OBJECT **ReturnObjectPtr)
+{
+ ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
+ ACPI_OPERAND_OBJECT **OuterElements;
+ UINT32 OuterElementCount;
+ ACPI_OPERAND_OBJECT *ObjDesc;
+ ACPI_STATUS Status;
+ BOOLEAN Removing;
+ UINT32 i;
+
+
+ ACPI_FUNCTION_NAME (NsRepair_CST);
+
+
+ /*
+ * Entries (subpackages) in the _CST Package must be sorted by the
+ * C-state type, in ascending order.
+ */
+ Status = AcpiNsCheckSortedList (Info, ReturnObject, 1, 4, 1,
+ ACPI_SORT_ASCENDING, "C-State Type");
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+
+ /*
+ * We now know the list is correctly sorted by C-state type. Check if
+ * the C-state type values are proportional.
+ */
+ OuterElementCount = ReturnObject->Package.Count - 1;
+ i = 0;
+ while (i < OuterElementCount)
+ {
+ OuterElements = &ReturnObject->Package.Elements[i + 1];
+ Removing = FALSE;
+
+ if ((*OuterElements)->Package.Count == 0)
+ {
+ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
+ "SubPackage[%u] - removing entry due to zero count", i));
+ Removing = TRUE;
+ }
+
+ ObjDesc = (*OuterElements)->Package.Elements[1]; /* Index1 = Type */
+ if ((UINT32) ObjDesc->Integer.Value == 0)
+ {
+ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
+ "SubPackage[%u] - removing entry due to invalid Type(0)", i));
+ Removing = TRUE;
+ }
+
+ if (Removing)
+ {
+ AcpiNsRemoveElement (ReturnObject, i + 1);
+ OuterElementCount--;
+ }
+ else
+ {
+ i++;
+ }
+ }
+
+ /* Update top-level package count, Type "Integer" checked elsewhere */
+
+ ObjDesc = ReturnObject->Package.Elements[0];
+ ObjDesc->Integer.Value = OuterElementCount;
+ return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
* FUNCTION: AcpiNsRepair_HID
*
* PARAMETERS: Info - Method execution information block
@@ -536,7 +648,7 @@ AcpiNsRepair_HID (
/******************************************************************************
*
- * FUNCTION: AcpiNsRepair_TSS
+ * FUNCTION: AcpiNsRepair_PRT
*
* PARAMETERS: Info - Method execution information block
* ReturnObjectPtr - Pointer to the object returned from the
@@ -544,40 +656,57 @@ AcpiNsRepair_HID (
*
* RETURN: Status. AE_OK if object is OK or was repaired successfully
*
- * DESCRIPTION: Repair for the _TSS object. If necessary, sort the object list
- * descending by the power dissipation values.
+ * DESCRIPTION: Repair for the _PRT object. If necessary, fix reversed
+ * SourceName and SourceIndex field, a common BIOS bug.
*
*****************************************************************************/
static ACPI_STATUS
-AcpiNsRepair_TSS (
+AcpiNsRepair_PRT (
ACPI_EVALUATE_INFO *Info,
ACPI_OPERAND_OBJECT **ReturnObjectPtr)
{
- ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
- ACPI_STATUS Status;
- ACPI_NAMESPACE_NODE *Node;
+ ACPI_OPERAND_OBJECT *PackageObject = *ReturnObjectPtr;
+ ACPI_OPERAND_OBJECT **TopObjectList;
+ ACPI_OPERAND_OBJECT **SubObjectList;
+ ACPI_OPERAND_OBJECT *ObjDesc;
+ UINT32 ElementCount;
+ UINT32 Index;
- /*
- * We can only sort the _TSS return package if there is no _PSS in the
- * same scope. This is because if _PSS is present, the ACPI specification
- * dictates that the _TSS Power Dissipation field is to be ignored, and
- * therefore some BIOSs leave garbage values in the _TSS Power field(s).
- * In this case, it is best to just return the _TSS package as-is.
- * (May, 2011)
- */
- Status = AcpiNsGetNode (Info->Node, "^_PSS",
- ACPI_NS_NO_UPSEARCH, &Node);
- if (ACPI_SUCCESS (Status))
+ /* Each element in the _PRT package is a subpackage */
+
+ TopObjectList = PackageObject->Package.Elements;
+ ElementCount = PackageObject->Package.Count;
+
+ for (Index = 0; Index < ElementCount; Index++)
{
- return (AE_OK);
- }
+ SubObjectList = (*TopObjectList)->Package.Elements;
- Status = AcpiNsCheckSortedList (Info, ReturnObject, 5, 1,
- ACPI_SORT_DESCENDING, "PowerDissipation");
+ /*
+ * If the BIOS has erroneously reversed the _PRT SourceName (index 2)
+ * and the SourceIndex (index 3), fix it. _PRT is important enough to
+ * workaround this BIOS error. This also provides compatibility with
+ * other ACPI implementations.
+ */
+ ObjDesc = SubObjectList[3];
+ if (!ObjDesc || (ObjDesc->Common.Type != ACPI_TYPE_INTEGER))
+ {
+ SubObjectList[3] = SubObjectList[2];
+ SubObjectList[2] = ObjDesc;
+ Info->ReturnFlags |= ACPI_OBJECT_REPAIRED;
- return (Status);
+ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
+ "PRT[%X]: Fixed reversed SourceName and SourceIndex",
+ Index));
+ }
+
+ /* Point to the next ACPI_OPERAND_OBJECT in the top level package */
+
+ TopObjectList++;
+ }
+
+ return (AE_OK);
}
@@ -619,7 +748,7 @@ AcpiNsRepair_PSS (
* incorrectly sorted, sort it. We sort by CpuFrequency, since this
* should be proportional to the power.
*/
- Status =AcpiNsCheckSortedList (Info, ReturnObject, 6, 0,
+ Status =AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0,
ACPI_SORT_DESCENDING, "CpuFrequency");
if (ACPI_FAILURE (Status))
{
@@ -656,10 +785,58 @@ AcpiNsRepair_PSS (
/******************************************************************************
*
+ * FUNCTION: AcpiNsRepair_TSS
+ *
+ * PARAMETERS: Info - Method execution information block
+ * ReturnObjectPtr - Pointer to the object returned from the
+ * evaluation of a method or object
+ *
+ * RETURN: Status. AE_OK if object is OK or was repaired successfully
+ *
+ * DESCRIPTION: Repair for the _TSS object. If necessary, sort the object list
+ * descending by the power dissipation values.
+ *
+ *****************************************************************************/
+
+static ACPI_STATUS
+AcpiNsRepair_TSS (
+ ACPI_EVALUATE_INFO *Info,
+ ACPI_OPERAND_OBJECT **ReturnObjectPtr)
+{
+ ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
+ ACPI_STATUS Status;
+ ACPI_NAMESPACE_NODE *Node;
+
+
+ /*
+ * We can only sort the _TSS return package if there is no _PSS in the
+ * same scope. This is because if _PSS is present, the ACPI specification
+ * dictates that the _TSS Power Dissipation field is to be ignored, and
+ * therefore some BIOSs leave garbage values in the _TSS Power field(s).
+ * In this case, it is best to just return the _TSS package as-is.
+ * (May, 2011)
+ */
+ Status = AcpiNsGetNode (Info->Node, "^_PSS",
+ ACPI_NS_NO_UPSEARCH, &Node);
+ if (ACPI_SUCCESS (Status))
+ {
+ return (AE_OK);
+ }
+
+ Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 5, 1,
+ ACPI_SORT_DESCENDING, "PowerDissipation");
+
+ return (Status);
+}
+
+
+/******************************************************************************
+ *
* FUNCTION: AcpiNsCheckSortedList
*
* PARAMETERS: Info - Method execution information block
* ReturnObject - Pointer to the top-level returned object
+ * StartIndex - Index of the first sub-package
* ExpectedCount - Minimum length of each sub-package
* SortIndex - Sub-package entry to sort on
* SortDirection - Ascending or descending
@@ -677,6 +854,7 @@ static ACPI_STATUS
AcpiNsCheckSortedList (
ACPI_EVALUATE_INFO *Info,
ACPI_OPERAND_OBJECT *ReturnObject,
+ UINT32 StartIndex,
UINT32 ExpectedCount,
UINT32 SortIndex,
UINT8 SortDirection,
@@ -705,13 +883,15 @@ AcpiNsCheckSortedList (
* Any NULL elements should have been removed by earlier call
* to AcpiNsRemoveNullElements.
*/
- OuterElements = ReturnObject->Package.Elements;
OuterElementCount = ReturnObject->Package.Count;
- if (!OuterElementCount)
+ if (!OuterElementCount || StartIndex >= OuterElementCount)
{
return (AE_AML_PACKAGE_LIMIT);
}
+ OuterElements = &ReturnObject->Package.Elements[StartIndex];
+ OuterElementCount -= StartIndex;
+
PreviousValue = 0;
if (SortDirection == ACPI_SORT_DESCENDING)
{
@@ -753,7 +933,7 @@ AcpiNsCheckSortedList (
((SortDirection == ACPI_SORT_DESCENDING) &&
(ObjDesc->Integer.Value > PreviousValue)))
{
- AcpiNsSortList (ReturnObject->Package.Elements,
+ AcpiNsSortList (&ReturnObject->Package.Elements[StartIndex],
OuterElementCount, SortIndex, SortDirection);
Info->ReturnFlags |= ACPI_OBJECT_REPAIRED;
@@ -826,3 +1006,61 @@ AcpiNsSortList (
}
}
}
+
+
+/******************************************************************************
+ *
+ * FUNCTION: AcpiNsRemoveElement
+ *
+ * PARAMETERS: ObjDesc - Package object element list
+ * Index - Index of element to remove
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Remove the requested element of a package and delete it.
+ *
+ *****************************************************************************/
+
+static void
+AcpiNsRemoveElement (
+ ACPI_OPERAND_OBJECT *ObjDesc,
+ UINT32 Index)
+{
+ ACPI_OPERAND_OBJECT **Source;
+ ACPI_OPERAND_OBJECT **Dest;
+ UINT32 Count;
+ UINT32 NewCount;
+ UINT32 i;
+
+
+ ACPI_FUNCTION_NAME (NsRemoveElement);
+
+
+ Count = ObjDesc->Package.Count;
+ NewCount = Count - 1;
+
+ Source = ObjDesc->Package.Elements;
+ Dest = Source;
+
+ /* Examine all elements of the package object, remove matched index */
+
+ for (i = 0; i < Count; i++)
+ {
+ if (i == Index)
+ {
+ AcpiUtRemoveReference (*Source); /* Remove one ref for being in pkg */
+ AcpiUtRemoveReference (*Source);
+ }
+ else
+ {
+ *Dest = *Source;
+ Dest++;
+ }
+ Source++;
+ }
+
+ /* NULL terminate list and update the package count */
+
+ *Dest = NULL;
+ ObjDesc->Package.Count = NewCount;
+}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsutils.c b/sys/contrib/dev/acpica/components/namespace/nsutils.c
index 31f9496..fdde368 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsutils.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsutils.c
@@ -497,10 +497,12 @@ AcpiNsExternalizeName (
switch (InternalName[0])
{
case AML_ROOT_PREFIX:
+
PrefixLength = 1;
break;
case AML_PARENT_PREFIX:
+
for (i = 0; i < InternalNameLength; i++)
{
if (ACPI_IS_PARENT_PREFIX (InternalName[i]))
@@ -521,6 +523,7 @@ AcpiNsExternalizeName (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsxfeval.c b/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
index 4890768..33976c7 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsxfeval.c
@@ -550,6 +550,7 @@ AcpiNsResolveReferences (
break;
default:
+
return;
}
diff --git a/sys/contrib/dev/acpica/components/parser/psargs.c b/sys/contrib/dev/acpica/components/parser/psargs.c
index 4b8a240..f61d4e1 100644
--- a/sys/contrib/dev/acpica/components/parser/psargs.c
+++ b/sys/contrib/dev/acpica/components/parser/psargs.c
@@ -447,7 +447,6 @@ AcpiPsGetNextSimpleArg (
Length = 1;
break;
-
case ARGP_WORDDATA:
/* Get 2 bytes from the AML stream */
@@ -457,7 +456,6 @@ AcpiPsGetNextSimpleArg (
Length = 2;
break;
-
case ARGP_DWORDDATA:
/* Get 4 bytes from the AML stream */
@@ -467,7 +465,6 @@ AcpiPsGetNextSimpleArg (
Length = 4;
break;
-
case ARGP_QWORDDATA:
/* Get 8 bytes from the AML stream */
@@ -477,7 +474,6 @@ AcpiPsGetNextSimpleArg (
Length = 8;
break;
-
case ARGP_CHARLIST:
/* Get a pointer to the string, point past the string */
@@ -495,7 +491,6 @@ AcpiPsGetNextSimpleArg (
Length++;
break;
-
case ARGP_NAME:
case ARGP_NAMESTRING:
@@ -503,7 +498,6 @@ AcpiPsGetNextSimpleArg (
Arg->Common.Value.Name = AcpiPsGetNextNamestring (ParserState);
return_VOID;
-
default:
ACPI_ERROR ((AE_INFO, "Invalid ArgType 0x%X", ArgType));
@@ -685,21 +679,25 @@ AcpiPsGetNextField (
switch (Opcode)
{
case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
+
BufferLength = ACPI_GET8 (ParserState->Aml);
ParserState->Aml += 1;
break;
case AML_WORD_OP: /* AML_WORDDATA_ARG */
+
BufferLength = ACPI_GET16 (ParserState->Aml);
ParserState->Aml += 2;
break;
case AML_DWORD_OP: /* AML_DWORDATA_ARG */
+
BufferLength = ACPI_GET32 (ParserState->Aml);
ParserState->Aml += 4;
break;
default:
+
BufferLength = 0;
break;
}
@@ -796,7 +794,6 @@ AcpiPsGetNextArg (
AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg);
break;
-
case ARGP_PKGLENGTH:
/* Package length, nothing returned */
@@ -804,7 +801,6 @@ AcpiPsGetNextArg (
ParserState->PkgEnd = AcpiPsGetNextPackageEnd (ParserState);
break;
-
case ARGP_FIELDLIST:
if (ParserState->Aml < ParserState->PkgEnd)
@@ -836,7 +832,6 @@ AcpiPsGetNextArg (
}
break;
-
case ARGP_BYTELIST:
if (ParserState->Aml < ParserState->PkgEnd)
@@ -861,7 +856,6 @@ AcpiPsGetNextArg (
}
break;
-
case ARGP_TARGET:
case ARGP_SUPERNAME:
case ARGP_SIMPLENAME:
@@ -909,7 +903,6 @@ AcpiPsGetNextArg (
}
break;
-
case ARGP_DATAOBJ:
case ARGP_TERMARG:
@@ -918,7 +911,6 @@ AcpiPsGetNextArg (
WalkState->ArgCount = 1;
break;
-
case ARGP_DATAOBJLIST:
case ARGP_TERMLIST:
case ARGP_OBJLIST:
@@ -931,7 +923,6 @@ AcpiPsGetNextArg (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Invalid ArgType: 0x%X", ArgType));
diff --git a/sys/contrib/dev/acpica/components/parser/psloop.c b/sys/contrib/dev/acpica/components/parser/psloop.c
index 4472bf1..6a88f4e 100644
--- a/sys/contrib/dev/acpica/components/parser/psloop.c
+++ b/sys/contrib/dev/acpica/components/parser/psloop.c
@@ -174,7 +174,6 @@ AcpiPsGetArguments (
case AML_IF_OP:
case AML_ELSE_OP:
case AML_WHILE_OP:
-
/*
* Currently supported module-level opcodes are:
* IF/ELSE/WHILE. These appear to be the most common,
@@ -280,6 +279,7 @@ AcpiPsGetArguments (
default:
/* No action for all other opcodes */
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/parser/psobject.c b/sys/contrib/dev/acpica/components/parser/psobject.c
index 397c6f9..4bdb6dc 100644
--- a/sys/contrib/dev/acpica/components/parser/psobject.c
+++ b/sys/contrib/dev/acpica/components/parser/psobject.c
@@ -436,8 +436,8 @@ AcpiPsCompleteOp (
switch (Status)
{
case AE_OK:
- break;
+ break;
case AE_CTRL_TRANSFER:
@@ -447,7 +447,6 @@ AcpiPsCompleteOp (
WalkState->PrevArgTypes = WalkState->ArgTypes;
return_ACPI_STATUS (Status);
-
case AE_CTRL_END:
AcpiPsPopScope (&(WalkState->ParserState), Op,
@@ -472,7 +471,6 @@ AcpiPsCompleteOp (
Status = AE_OK;
break;
-
case AE_CTRL_BREAK:
case AE_CTRL_CONTINUE:
@@ -502,7 +500,6 @@ AcpiPsCompleteOp (
Status = AE_OK;
break;
-
case AE_CTRL_TERMINATE:
/* Clean up */
@@ -527,7 +524,6 @@ AcpiPsCompleteOp (
return_ACPI_STATUS (AE_OK);
-
default: /* All other non-AE_OK status */
do
diff --git a/sys/contrib/dev/acpica/components/parser/psparse.c b/sys/contrib/dev/acpica/components/parser/psparse.c
index 1dafdc1..989abdf 100644
--- a/sys/contrib/dev/acpica/components/parser/psparse.c
+++ b/sys/contrib/dev/acpica/components/parser/psparse.c
@@ -191,10 +191,10 @@ AcpiPsCompleteThisOp (
switch (ParentInfo->Class)
{
case AML_CLASS_CONTROL:
+
break;
case AML_CLASS_CREATE:
-
/*
* These opcodes contain TermArg operands. The current
* op must be replaced by a placeholder return op
@@ -207,7 +207,6 @@ AcpiPsCompleteThisOp (
break;
case AML_CLASS_NAMED_OBJECT:
-
/*
* These opcodes contain TermArg operands. The current
* op must be replaced by a placeholder return op
@@ -352,7 +351,6 @@ AcpiPsNextParseState (
Status = AE_CTRL_TERMINATE;
break;
-
case AE_CTRL_BREAK:
ParserState->Aml = WalkState->AmlLastWhile;
@@ -360,14 +358,12 @@ AcpiPsNextParseState (
Status = AE_CTRL_BREAK;
break;
-
case AE_CTRL_CONTINUE:
ParserState->Aml = WalkState->AmlLastWhile;
Status = AE_CTRL_CONTINUE;
break;
-
case AE_CTRL_PENDING:
ParserState->Aml = WalkState->AmlLastWhile;
@@ -390,7 +386,6 @@ AcpiPsNextParseState (
Status = AE_CTRL_PENDING;
break;
-
case AE_CTRL_FALSE:
/*
* Either an IF/WHILE Predicate was false or we encountered a BREAK
@@ -407,7 +402,6 @@ AcpiPsNextParseState (
Status = AE_CTRL_END;
break;
-
case AE_CTRL_TRANSFER:
/* A method call (invocation) -- transfer control */
@@ -422,7 +416,6 @@ AcpiPsNextParseState (
WalkState->ReturnUsed = AcpiDsIsResultUsed (Op, WalkState);
break;
-
default:
Status = CallbackStatus;
diff --git a/sys/contrib/dev/acpica/components/parser/pstree.c b/sys/contrib/dev/acpica/components/parser/pstree.c
index 277c702..c0eeaf6 100644
--- a/sys/contrib/dev/acpica/components/parser/pstree.c
+++ b/sys/contrib/dev/acpica/components/parser/pstree.c
@@ -322,7 +322,6 @@ AcpiPsGetChild (
Child = AcpiPsGetArg (Op, 0);
break;
-
case AML_BUFFER_OP:
case AML_PACKAGE_OP:
case AML_METHOD_OP:
@@ -333,23 +332,22 @@ AcpiPsGetChild (
Child = AcpiPsGetArg (Op, 1);
break;
-
case AML_POWER_RES_OP:
case AML_INDEX_FIELD_OP:
Child = AcpiPsGetArg (Op, 2);
break;
-
case AML_PROCESSOR_OP:
case AML_BANK_FIELD_OP:
Child = AcpiPsGetArg (Op, 3);
break;
-
default:
+
/* All others have no children */
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/resources/rscalc.c b/sys/contrib/dev/acpica/components/resources/rscalc.c
index 9dd3321..7fadb41 100644
--- a/sys/contrib/dev/acpica/components/resources/rscalc.c
+++ b/sys/contrib/dev/acpica/components/resources/rscalc.c
@@ -371,8 +371,8 @@ AcpiRsGetAmlLength (
break;
-
default:
+
break;
}
@@ -562,6 +562,7 @@ AcpiRsGetListLength (
break;
default:
+
break;
}
@@ -676,7 +677,9 @@ AcpiRsGetPciRoutingTableLength (
NameFound = FALSE;
- for (TableIndex = 0; TableIndex < 4 && !NameFound; TableIndex++)
+ for (TableIndex = 0;
+ TableIndex < PackageElement->Package.Count && !NameFound;
+ TableIndex++)
{
if (*SubObjectList && /* Null object allowed */
diff --git a/sys/contrib/dev/acpica/components/resources/rscreate.c b/sys/contrib/dev/acpica/components/resources/rscreate.c
index 86c10aa..b599666 100644
--- a/sys/contrib/dev/acpica/components/resources/rscreate.c
+++ b/sys/contrib/dev/acpica/components/resources/rscreate.c
@@ -297,16 +297,6 @@ AcpiRsCreatePciRoutingTable (
*/
UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4);
- /* Each element of the top-level package must also be a package */
-
- if ((*TopObjectList)->Common.Type != ACPI_TYPE_PACKAGE)
- {
- ACPI_ERROR ((AE_INFO,
- "(PRT[%u]) Need sub-package, found %s",
- Index, AcpiUtGetObjectTypeName (*TopObjectList)));
- return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
- }
-
/* Each sub-package must be of length 4 */
if ((*TopObjectList)->Package.Count != 4)
@@ -349,23 +339,6 @@ AcpiRsCreatePciRoutingTable (
UserPrt->Pin = (UINT32) ObjDesc->Integer.Value;
/*
- * If the BIOS has erroneously reversed the _PRT SourceName (index 2)
- * and the SourceIndex (index 3), fix it. _PRT is important enough to
- * workaround this BIOS error. This also provides compatibility with
- * other ACPI implementations.
- */
- ObjDesc = SubObjectList[3];
- if (!ObjDesc || (ObjDesc->Common.Type != ACPI_TYPE_INTEGER))
- {
- SubObjectList[3] = SubObjectList[2];
- SubObjectList[2] = ObjDesc;
-
- ACPI_WARNING ((AE_INFO,
- "(PRT[%X].Source) SourceName and SourceIndex are reversed, fixed",
- Index));
- }
-
- /*
* 3) Third subobject: Dereference the PRT.SourceName
* The name may be unresolved (slack mode), so allow a null object
*/
@@ -400,7 +373,6 @@ AcpiRsCreatePciRoutingTable (
UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1;
break;
-
case ACPI_TYPE_STRING:
ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer);
@@ -412,7 +384,6 @@ AcpiRsCreatePciRoutingTable (
UserPrt->Length += ObjDesc->String.Length + 1;
break;
-
case ACPI_TYPE_INTEGER:
/*
* If this is a number, then the Source Name is NULL, since the
@@ -423,7 +394,6 @@ AcpiRsCreatePciRoutingTable (
UserPrt->Length += sizeof (UINT32);
break;
-
default:
ACPI_ERROR ((AE_INFO,
diff --git a/sys/contrib/dev/acpica/components/resources/rsdump.c b/sys/contrib/dev/acpica/components/resources/rsdump.c
index e89f467..81c248c 100644
--- a/sys/contrib/dev/acpica/components/resources/rsdump.c
+++ b/sys/contrib/dev/acpica/components/resources/rsdump.c
@@ -168,16 +168,19 @@ AcpiRsDumpDescriptor (
/* Strings */
case ACPI_RSD_LITERAL:
+
AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer));
break;
case ACPI_RSD_STRING:
+
AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target));
break;
/* Data items, 8/16/32/64 bit */
case ACPI_RSD_UINT8:
+
if (Table->Pointer)
{
AcpiRsOutString (Name, ACPI_CAST_PTR (char,
@@ -190,30 +193,36 @@ AcpiRsDumpDescriptor (
break;
case ACPI_RSD_UINT16:
+
AcpiRsOutInteger16 (Name, ACPI_GET16 (Target));
break;
case ACPI_RSD_UINT32:
+
AcpiRsOutInteger32 (Name, ACPI_GET32 (Target));
break;
case ACPI_RSD_UINT64:
+
AcpiRsOutInteger64 (Name, ACPI_GET64 (Target));
break;
/* Flags: 1-bit and 2-bit flags supported */
case ACPI_RSD_1BITFLAG:
+
AcpiRsOutString (Name, ACPI_CAST_PTR (char,
Table->Pointer [*Target & 0x01]));
break;
case ACPI_RSD_2BITFLAG:
+
AcpiRsOutString (Name, ACPI_CAST_PTR (char,
Table->Pointer [*Target & 0x03]));
break;
case ACPI_RSD_3BITFLAG:
+
AcpiRsOutString (Name, ACPI_CAST_PTR (char,
Table->Pointer [*Target & 0x07]));
break;
@@ -293,6 +302,7 @@ AcpiRsDumpDescriptor (
break;
default:
+
AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
Table->Opcode);
return;
diff --git a/sys/contrib/dev/acpica/components/resources/rsmisc.c b/sys/contrib/dev/acpica/components/resources/rsmisc.c
index c0687ca..e895add 100644
--- a/sys/contrib/dev/acpica/components/resources/rsmisc.c
+++ b/sys/contrib/dev/acpica/components/resources/rsmisc.c
@@ -137,17 +137,14 @@ AcpiRsConvertAmlToResource (
Resource->Length = INIT_RESOURCE_LENGTH (Info);
break;
-
case ACPI_RSC_INITSET:
break;
-
case ACPI_RSC_FLAGINIT:
FlagsMode = TRUE;
break;
-
case ACPI_RSC_1BITFLAG:
/*
* Mask and shift the flag bit
@@ -156,7 +153,6 @@ AcpiRsConvertAmlToResource (
((ACPI_GET8 (Source) >> Info->Value) & 0x01));
break;
-
case ACPI_RSC_2BITFLAG:
/*
* Mask and shift the flag bits
@@ -165,7 +161,6 @@ AcpiRsConvertAmlToResource (
((ACPI_GET8 (Source) >> Info->Value) & 0x03));
break;
-
case ACPI_RSC_3BITFLAG:
/*
* Mask and shift the flag bits
@@ -174,7 +169,6 @@ AcpiRsConvertAmlToResource (
((ACPI_GET8 (Source) >> Info->Value) & 0x07));
break;
-
case ACPI_RSC_COUNT:
ItemCount = ACPI_GET8 (Source);
@@ -184,7 +178,6 @@ AcpiRsConvertAmlToResource (
(Info->Value * (ItemCount - 1));
break;
-
case ACPI_RSC_COUNT16:
ItemCount = AmlResourceLength;
@@ -194,7 +187,6 @@ AcpiRsConvertAmlToResource (
(Info->Value * (ItemCount - 1));
break;
-
case ACPI_RSC_COUNT_GPIO_PIN:
Target = ACPI_ADD_PTR (void, Aml, Info->Value);
@@ -205,7 +197,6 @@ AcpiRsConvertAmlToResource (
ACPI_SET16 (Destination, ItemCount);
break;
-
case ACPI_RSC_COUNT_GPIO_VEN:
ItemCount = ACPI_GET8 (Source);
@@ -215,9 +206,7 @@ AcpiRsConvertAmlToResource (
(Info->Value * ItemCount);
break;
-
case ACPI_RSC_COUNT_GPIO_RES:
-
/*
* Vendor data is optional (length/offset may both be zero)
* Examine vendor data length field first
@@ -243,7 +232,6 @@ AcpiRsConvertAmlToResource (
ACPI_SET16 (Destination, ItemCount);
break;
-
case ACPI_RSC_COUNT_SERIAL_VEN:
ItemCount = ACPI_GET16 (Source) - Info->Value;
@@ -252,7 +240,6 @@ AcpiRsConvertAmlToResource (
ACPI_SET16 (Destination, ItemCount);
break;
-
case ACPI_RSC_COUNT_SERIAL_RES:
ItemCount = (AmlResourceLength +
@@ -263,13 +250,11 @@ AcpiRsConvertAmlToResource (
ACPI_SET16 (Destination, ItemCount);
break;
-
case ACPI_RSC_LENGTH:
Resource->Length = Resource->Length + Info->Value;
break;
-
case ACPI_RSC_MOVE8:
case ACPI_RSC_MOVE16:
case ACPI_RSC_MOVE32:
@@ -285,7 +270,6 @@ AcpiRsConvertAmlToResource (
AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_GPIO_PIN:
/* Generate and set the PIN data pointer */
@@ -300,7 +284,6 @@ AcpiRsConvertAmlToResource (
AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_GPIO_RES:
/* Generate and set the ResourceSource string pointer */
@@ -315,7 +298,6 @@ AcpiRsConvertAmlToResource (
AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_SERIAL_VEN:
/* Generate and set the Vendor Data pointer */
@@ -330,7 +312,6 @@ AcpiRsConvertAmlToResource (
AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_SERIAL_RES:
/* Generate and set the ResourceSource string pointer */
@@ -345,20 +326,17 @@ AcpiRsConvertAmlToResource (
AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_SET8:
ACPI_MEMSET (Destination, Info->AmlOffset, Info->Value);
break;
-
case ACPI_RSC_DATA8:
Target = ACPI_ADD_PTR (char, Resource, Info->Value);
ACPI_MEMCPY (Destination, Source, ACPI_GET16 (Target));
break;
-
case ACPI_RSC_ADDRESS:
/*
* Common handler for address descriptor flags
@@ -369,7 +347,6 @@ AcpiRsConvertAmlToResource (
}
break;
-
case ACPI_RSC_SOURCE:
/*
* Optional ResourceSource (Index and String)
@@ -379,7 +356,6 @@ AcpiRsConvertAmlToResource (
Destination, Aml, NULL);
break;
-
case ACPI_RSC_SOURCEX:
/*
* Optional ResourceSource (Index and String). This is the more
@@ -394,7 +370,6 @@ AcpiRsConvertAmlToResource (
Destination, Aml, Target);
break;
-
case ACPI_RSC_BITMASK:
/*
* 8-bit encoded bitmask (DMA macro)
@@ -409,7 +384,6 @@ AcpiRsConvertAmlToResource (
ACPI_SET8 (Target, ItemCount);
break;
-
case ACPI_RSC_BITMASK16:
/*
* 16-bit encoded bitmask (IRQ macro)
@@ -426,7 +400,6 @@ AcpiRsConvertAmlToResource (
ACPI_SET8 (Target, ItemCount);
break;
-
case ACPI_RSC_EXIT_NE:
/*
* Control - Exit conversion if not equal
@@ -434,6 +407,7 @@ AcpiRsConvertAmlToResource (
switch (Info->ResourceOffset)
{
case ACPI_RSC_COMPARE_AML_LENGTH:
+
if (AmlResourceLength != Info->Value)
{
goto Exit;
@@ -441,6 +415,7 @@ AcpiRsConvertAmlToResource (
break;
case ACPI_RSC_COMPARE_VALUE:
+
if (ACPI_GET8 (Source) != Info->Value)
{
goto Exit;
@@ -454,7 +429,6 @@ AcpiRsConvertAmlToResource (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Invalid conversion opcode"));
@@ -538,11 +512,9 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml);
break;
-
case ACPI_RSC_INITGET:
break;
-
case ACPI_RSC_FLAGINIT:
/*
* Clear the flag byte
@@ -550,7 +522,6 @@ AcpiRsConvertResourceToAml (
ACPI_SET8 (Destination, 0);
break;
-
case ACPI_RSC_1BITFLAG:
/*
* Mask and shift the flag bit
@@ -559,7 +530,6 @@ AcpiRsConvertResourceToAml (
((ACPI_GET8 (Source) & 0x01) << Info->Value));
break;
-
case ACPI_RSC_2BITFLAG:
/*
* Mask and shift the flag bits
@@ -568,7 +538,6 @@ AcpiRsConvertResourceToAml (
((ACPI_GET8 (Source) & 0x03) << Info->Value));
break;
-
case ACPI_RSC_3BITFLAG:
/*
* Mask and shift the flag bits
@@ -577,7 +546,6 @@ AcpiRsConvertResourceToAml (
((ACPI_GET8 (Source) & 0x07) << Info->Value));
break;
-
case ACPI_RSC_COUNT:
ItemCount = ACPI_GET8 (Source);
@@ -586,7 +554,6 @@ AcpiRsConvertResourceToAml (
AmlLength = (UINT16) (AmlLength + (Info->Value * (ItemCount - 1)));
break;
-
case ACPI_RSC_COUNT16:
ItemCount = ACPI_GET16 (Source);
@@ -594,7 +561,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_COUNT_GPIO_PIN:
ItemCount = ACPI_GET16 (Source);
@@ -606,7 +572,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_COUNT_GPIO_VEN:
ItemCount = ACPI_GET16 (Source);
@@ -616,7 +581,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_COUNT_GPIO_RES:
/* Set resource source string length */
@@ -639,7 +603,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_COUNT_SERIAL_VEN:
ItemCount = ACPI_GET16 (Source);
@@ -648,7 +611,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_COUNT_SERIAL_RES:
ItemCount = ACPI_GET16 (Source);
@@ -656,13 +618,11 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_LENGTH:
AcpiRsSetResourceLength (Info->Value, Aml);
break;
-
case ACPI_RSC_MOVE8:
case ACPI_RSC_MOVE16:
case ACPI_RSC_MOVE32:
@@ -675,7 +635,6 @@ AcpiRsConvertResourceToAml (
AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_GPIO_PIN:
Destination = (char *) ACPI_ADD_PTR (void, Aml,
@@ -684,7 +643,6 @@ AcpiRsConvertResourceToAml (
AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_GPIO_RES:
/* Used for both ResourceSource string and VendorData */
@@ -695,7 +653,6 @@ AcpiRsConvertResourceToAml (
AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_SERIAL_VEN:
Destination = (char *) ACPI_ADD_PTR (void, Aml,
@@ -704,7 +661,6 @@ AcpiRsConvertResourceToAml (
AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_MOVE_SERIAL_RES:
Destination = (char *) ACPI_ADD_PTR (void, Aml,
@@ -713,7 +669,6 @@ AcpiRsConvertResourceToAml (
AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode);
break;
-
case ACPI_RSC_ADDRESS:
/* Set the Resource Type, General Flags, and Type-Specific Flags */
@@ -721,7 +676,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetAddressCommon (Aml, Resource);
break;
-
case ACPI_RSC_SOURCEX:
/*
* Optional ResourceSource (Index and String)
@@ -731,7 +685,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_SOURCE:
/*
* Optional ResourceSource (Index and String). This is the more
@@ -741,7 +694,6 @@ AcpiRsConvertResourceToAml (
AcpiRsSetResourceLength (AmlLength, Aml);
break;
-
case ACPI_RSC_BITMASK:
/*
* 8-bit encoded bitmask (DMA macro)
@@ -751,7 +703,6 @@ AcpiRsConvertResourceToAml (
*ACPI_ADD_PTR (UINT8, Resource, Info->Value)));
break;
-
case ACPI_RSC_BITMASK16:
/*
* 16-bit encoded bitmask (IRQ macro)
@@ -761,7 +712,6 @@ AcpiRsConvertResourceToAml (
ACPI_MOVE_16_TO_16 (Destination, &Temp16);
break;
-
case ACPI_RSC_EXIT_LE:
/*
* Control - Exit conversion if less than or equal
@@ -772,7 +722,6 @@ AcpiRsConvertResourceToAml (
}
break;
-
case ACPI_RSC_EXIT_NE:
/*
* Control - Exit conversion if not equal
@@ -795,7 +744,6 @@ AcpiRsConvertResourceToAml (
}
break;
-
case ACPI_RSC_EXIT_EQ:
/*
* Control - Exit conversion if equal
@@ -807,7 +755,6 @@ AcpiRsConvertResourceToAml (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Invalid conversion opcode"));
diff --git a/sys/contrib/dev/acpica/components/resources/rsutils.c b/sys/contrib/dev/acpica/components/resources/rsutils.c
index b9ef66a..57f2e6e 100644
--- a/sys/contrib/dev/acpica/components/resources/rsutils.c
+++ b/sys/contrib/dev/acpica/components/resources/rsutils.c
@@ -176,6 +176,7 @@ AcpiRsMoveData (
case ACPI_RSC_MOVE_GPIO_RES:
case ACPI_RSC_MOVE_SERIAL_VEN:
case ACPI_RSC_MOVE_SERIAL_RES:
+
ACPI_MEMCPY (Destination, Source, ItemCount);
return;
@@ -186,21 +187,25 @@ AcpiRsMoveData (
*/
case ACPI_RSC_MOVE16:
case ACPI_RSC_MOVE_GPIO_PIN:
+
ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i],
&ACPI_CAST_PTR (UINT16, Source)[i]);
break;
case ACPI_RSC_MOVE32:
+
ACPI_MOVE_32_TO_32 (&ACPI_CAST_PTR (UINT32, Destination)[i],
&ACPI_CAST_PTR (UINT32, Source)[i]);
break;
case ACPI_RSC_MOVE64:
+
ACPI_MOVE_64_TO_64 (&ACPI_CAST_PTR (UINT64, Destination)[i],
&ACPI_CAST_PTR (UINT64, Source)[i]);
break;
default:
+
return;
}
}
diff --git a/sys/contrib/dev/acpica/components/resources/rsxface.c b/sys/contrib/dev/acpica/components/resources/rsxface.c
index 557fa2f..b2ff381 100644
--- a/sys/contrib/dev/acpica/components/resources/rsxface.c
+++ b/sys/contrib/dev/acpica/components/resources/rsxface.c
@@ -452,6 +452,7 @@ AcpiResourceToAddress64 (
break;
default:
+
return (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/components/tables/tbinstal.c b/sys/contrib/dev/acpica/components/tables/tbinstal.c
index e6558ff..6ca141f 100644
--- a/sys/contrib/dev/acpica/components/tables/tbinstal.c
+++ b/sys/contrib/dev/acpica/components/tables/tbinstal.c
@@ -160,7 +160,7 @@ AcpiTbAddTable (
ACPI_BIOS_ERROR ((AE_INFO,
"Table has invalid signature [%4.4s] (0x%8.8X), "
"must be SSDT or OEMx",
- AcpiUtValidAcpiName (*(UINT32 *) TableDesc->Pointer->Signature) ?
+ AcpiUtValidAcpiName (TableDesc->Pointer->Signature) ?
TableDesc->Pointer->Signature : "????",
*(UINT32 *) TableDesc->Pointer->Signature));
@@ -514,16 +514,19 @@ AcpiTbDeleteTable (
switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK)
{
case ACPI_TABLE_ORIGIN_MAPPED:
+
AcpiOsUnmapMemory (TableDesc->Pointer, TableDesc->Length);
break;
case ACPI_TABLE_ORIGIN_ALLOCATED:
+
ACPI_FREE (TableDesc->Pointer);
break;
/* Not mapped or allocated, there is nothing we can do */
default:
+
return;
}
diff --git a/sys/contrib/dev/acpica/components/tables/tbprint.c b/sys/contrib/dev/acpica/components/tables/tbprint.c
new file mode 100644
index 0000000..6c83bf3
--- /dev/null
+++ b/sys/contrib/dev/acpica/components/tables/tbprint.c
@@ -0,0 +1,265 @@
+/******************************************************************************
+ *
+ * Module Name: tbprint - Table output utilities
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2013, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#define __TBPRINT_C__
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
+#include <contrib/dev/acpica/include/actables.h>
+
+#define _COMPONENT ACPI_TABLES
+ ACPI_MODULE_NAME ("tbprint")
+
+
+/* Local prototypes */
+
+static void
+AcpiTbFixString (
+ char *String,
+ ACPI_SIZE Length);
+
+static void
+AcpiTbCleanupTableHeader (
+ ACPI_TABLE_HEADER *OutHeader,
+ ACPI_TABLE_HEADER *Header);
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiTbFixString
+ *
+ * PARAMETERS: String - String to be repaired
+ * Length - Maximum length
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Replace every non-printable or non-ascii byte in the string
+ * with a question mark '?'.
+ *
+ ******************************************************************************/
+
+static void
+AcpiTbFixString (
+ char *String,
+ ACPI_SIZE Length)
+{
+
+ while (Length && *String)
+ {
+ if (!ACPI_IS_PRINT (*String))
+ {
+ *String = '?';
+ }
+ String++;
+ Length--;
+ }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiTbCleanupTableHeader
+ *
+ * PARAMETERS: OutHeader - Where the cleaned header is returned
+ * Header - Input ACPI table header
+ *
+ * RETURN: Returns the cleaned header in OutHeader
+ *
+ * DESCRIPTION: Copy the table header and ensure that all "string" fields in
+ * the header consist of printable characters.
+ *
+ ******************************************************************************/
+
+static void
+AcpiTbCleanupTableHeader (
+ ACPI_TABLE_HEADER *OutHeader,
+ ACPI_TABLE_HEADER *Header)
+{
+
+ ACPI_MEMCPY (OutHeader, Header, sizeof (ACPI_TABLE_HEADER));
+
+ AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE);
+ AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE);
+ AcpiTbFixString (OutHeader->OemTableId, ACPI_OEM_TABLE_ID_SIZE);
+ AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAME_SIZE);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiTbPrintTableHeader
+ *
+ * PARAMETERS: Address - Table physical address
+ * Header - Table header
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Print an ACPI table header. Special cases for FACS and RSDP.
+ *
+ ******************************************************************************/
+
+void
+AcpiTbPrintTableHeader (
+ ACPI_PHYSICAL_ADDRESS Address,
+ ACPI_TABLE_HEADER *Header)
+{
+ ACPI_TABLE_HEADER LocalHeader;
+
+
+ /*
+ * The reason that the Address is cast to a void pointer is so that we
+ * can use %p which will work properly on both 32-bit and 64-bit hosts.
+ */
+ if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS))
+ {
+ /* FACS only has signature and length fields */
+
+ ACPI_INFO ((AE_INFO, "%4.4s %p %05X",
+ Header->Signature, ACPI_CAST_PTR (void, Address),
+ Header->Length));
+ }
+ else if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_RSDP))
+ {
+ /* RSDP has no common fields */
+
+ ACPI_MEMCPY (LocalHeader.OemId,
+ ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE);
+ AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE);
+
+ ACPI_INFO ((AE_INFO, "RSDP %p %05X (v%.2d %6.6s)",
+ ACPI_CAST_PTR (void, Address),
+ (ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision > 0) ?
+ ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Length : 20,
+ ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision,
+ LocalHeader.OemId));
+ }
+ else
+ {
+ /* Standard ACPI table with full common header */
+
+ AcpiTbCleanupTableHeader (&LocalHeader, Header);
+
+ ACPI_INFO ((AE_INFO,
+ "%4.4s %p %05X (v%.2d %6.6s %8.8s %08X %4.4s %08X)",
+ LocalHeader.Signature, ACPI_CAST_PTR (void, Address),
+ LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId,
+ LocalHeader.OemTableId, LocalHeader.OemRevision,
+ LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision));
+ }
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiTbValidateChecksum
+ *
+ * PARAMETERS: Table - ACPI table to verify
+ * Length - Length of entire table
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns
+ * exception on bad checksum.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiTbVerifyChecksum (
+ ACPI_TABLE_HEADER *Table,
+ UINT32 Length)
+{
+ UINT8 Checksum;
+
+
+ /* Compute the checksum on the table */
+
+ Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length);
+
+ /* Checksum ok? (should be zero) */
+
+ if (Checksum)
+ {
+ ACPI_BIOS_WARNING ((AE_INFO,
+ "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
+ "should be 0x%2.2X",
+ Table->Signature, Table->Checksum,
+ (UINT8) (Table->Checksum - Checksum)));
+
+#if (ACPI_CHECKSUM_ABORT)
+ return (AE_BAD_CHECKSUM);
+#endif
+ }
+
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiTbChecksum
+ *
+ * PARAMETERS: Buffer - Pointer to memory region to be checked
+ * Length - Length of this memory region
+ *
+ * RETURN: Checksum (UINT8)
+ *
+ * DESCRIPTION: Calculates circular checksum of memory region.
+ *
+ ******************************************************************************/
+
+UINT8
+AcpiTbChecksum (
+ UINT8 *Buffer,
+ UINT32 Length)
+{
+ UINT8 Sum = 0;
+ UINT8 *End = Buffer + Length;
+
+
+ while (Buffer < End)
+ {
+ Sum = (UINT8) (Sum + *(Buffer++));
+ }
+
+ return (Sum);
+}
diff --git a/sys/contrib/dev/acpica/components/tables/tbutils.c b/sys/contrib/dev/acpica/components/tables/tbutils.c
index 500c2f1..5cc157d 100644
--- a/sys/contrib/dev/acpica/components/tables/tbutils.c
+++ b/sys/contrib/dev/acpica/components/tables/tbutils.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Module Name: tbutils - table utilities
+ * Module Name: tbutils - ACPI Table utilities
*
*****************************************************************************/
@@ -53,16 +53,6 @@
/* Local prototypes */
-static void
-AcpiTbFixString (
- char *String,
- ACPI_SIZE Length);
-
-static void
-AcpiTbCleanupTableHeader (
- ACPI_TABLE_HEADER *OutHeader,
- ACPI_TABLE_HEADER *Header);
-
static ACPI_PHYSICAL_ADDRESS
AcpiTbGetRootTableEntry (
UINT8 *TableEntry,
@@ -134,207 +124,6 @@ AcpiTbTablesLoaded (
/*******************************************************************************
*
- * FUNCTION: AcpiTbFixString
- *
- * PARAMETERS: String - String to be repaired
- * Length - Maximum length
- *
- * RETURN: None
- *
- * DESCRIPTION: Replace every non-printable or non-ascii byte in the string
- * with a question mark '?'.
- *
- ******************************************************************************/
-
-static void
-AcpiTbFixString (
- char *String,
- ACPI_SIZE Length)
-{
-
- while (Length && *String)
- {
- if (!ACPI_IS_PRINT (*String))
- {
- *String = '?';
- }
- String++;
- Length--;
- }
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiTbCleanupTableHeader
- *
- * PARAMETERS: OutHeader - Where the cleaned header is returned
- * Header - Input ACPI table header
- *
- * RETURN: Returns the cleaned header in OutHeader
- *
- * DESCRIPTION: Copy the table header and ensure that all "string" fields in
- * the header consist of printable characters.
- *
- ******************************************************************************/
-
-static void
-AcpiTbCleanupTableHeader (
- ACPI_TABLE_HEADER *OutHeader,
- ACPI_TABLE_HEADER *Header)
-{
-
- ACPI_MEMCPY (OutHeader, Header, sizeof (ACPI_TABLE_HEADER));
-
- AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE);
- AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE);
- AcpiTbFixString (OutHeader->OemTableId, ACPI_OEM_TABLE_ID_SIZE);
- AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAME_SIZE);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiTbPrintTableHeader
- *
- * PARAMETERS: Address - Table physical address
- * Header - Table header
- *
- * RETURN: None
- *
- * DESCRIPTION: Print an ACPI table header. Special cases for FACS and RSDP.
- *
- ******************************************************************************/
-
-void
-AcpiTbPrintTableHeader (
- ACPI_PHYSICAL_ADDRESS Address,
- ACPI_TABLE_HEADER *Header)
-{
- ACPI_TABLE_HEADER LocalHeader;
-
-
- /*
- * The reason that the Address is cast to a void pointer is so that we
- * can use %p which will work properly on both 32-bit and 64-bit hosts.
- */
- if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS))
- {
- /* FACS only has signature and length fields */
-
- ACPI_INFO ((AE_INFO, "%4.4s %p %05X",
- Header->Signature, ACPI_CAST_PTR (void, Address),
- Header->Length));
- }
- else if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_RSDP))
- {
- /* RSDP has no common fields */
-
- ACPI_MEMCPY (LocalHeader.OemId,
- ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE);
- AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE);
-
- ACPI_INFO ((AE_INFO, "RSDP %p %05X (v%.2d %6.6s)",
- ACPI_CAST_PTR (void, Address),
- (ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision > 0) ?
- ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Length : 20,
- ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision,
- LocalHeader.OemId));
- }
- else
- {
- /* Standard ACPI table with full common header */
-
- AcpiTbCleanupTableHeader (&LocalHeader, Header);
-
- ACPI_INFO ((AE_INFO,
- "%4.4s %p %05X (v%.2d %6.6s %8.8s %08X %4.4s %08X)",
- LocalHeader.Signature, ACPI_CAST_PTR (void, Address),
- LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId,
- LocalHeader.OemTableId, LocalHeader.OemRevision,
- LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision));
- }
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiTbValidateChecksum
- *
- * PARAMETERS: Table - ACPI table to verify
- * Length - Length of entire table
- *
- * RETURN: Status
- *
- * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns
- * exception on bad checksum.
- *
- ******************************************************************************/
-
-ACPI_STATUS
-AcpiTbVerifyChecksum (
- ACPI_TABLE_HEADER *Table,
- UINT32 Length)
-{
- UINT8 Checksum;
-
-
- /* Compute the checksum on the table */
-
- Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length);
-
- /* Checksum ok? (should be zero) */
-
- if (Checksum)
- {
- ACPI_BIOS_WARNING ((AE_INFO,
- "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
- "should be 0x%2.2X",
- Table->Signature, Table->Checksum,
- (UINT8) (Table->Checksum - Checksum)));
-
-#if (ACPI_CHECKSUM_ABORT)
- return (AE_BAD_CHECKSUM);
-#endif
- }
-
- return (AE_OK);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiTbChecksum
- *
- * PARAMETERS: Buffer - Pointer to memory region to be checked
- * Length - Length of this memory region
- *
- * RETURN: Checksum (UINT8)
- *
- * DESCRIPTION: Calculates circular checksum of memory region.
- *
- ******************************************************************************/
-
-UINT8
-AcpiTbChecksum (
- UINT8 *Buffer,
- UINT32 Length)
-{
- UINT8 Sum = 0;
- UINT8 *End = Buffer + Length;
-
-
- while (Buffer < End)
- {
- Sum = (UINT8) (Sum + *(Buffer++));
- }
-
- return (Sum);
-}
-
-
-/*******************************************************************************
- *
* FUNCTION: AcpiTbCheckDsdtHeader
*
* PARAMETERS: None
@@ -485,19 +274,6 @@ AcpiTbInstallTable (
TableDesc->Flags = ACPI_TABLE_ORIGIN_MAPPED;
ACPI_MOVE_32_TO_32 (TableDesc->Signature.Ascii, Table->Signature);
- /* When DSDT is overriden, assume SSDT is also overriden with it */
-
- if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT) &&
- (AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Flags &
- ACPI_TABLE_ORIGIN_OVERRIDE))
- {
- TableDesc->Flags = ACPI_TABLE_ORIGIN_OVERRIDE;
- ACPI_INFO ((AE_INFO,
- "%4.4s %p Logical table override, replaced with %4.4s",
- ACPI_SIG_SSDT, ACPI_CAST_PTR (void, Address), ACPI_SIG_DSDT));
- goto UnmapAndExit;
- }
-
/*
* ACPI Table Override:
*
diff --git a/sys/contrib/dev/acpica/components/tables/tbxfload.c b/sys/contrib/dev/acpica/components/tables/tbxfload.c
index 5a4906f..171f74c 100644
--- a/sys/contrib/dev/acpica/components/tables/tbxfload.c
+++ b/sys/contrib/dev/acpica/components/tables/tbxfload.c
@@ -180,7 +180,7 @@ AcpiTbLoadNamespace (
/* Load any SSDT or PSDT tables. Note: Loop leaves tables locked */
(void) AcpiUtAcquireMutex (ACPI_MTX_TABLES);
- for (i = 2; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
+ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
{
if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),
ACPI_SIG_SSDT) &&
@@ -192,12 +192,15 @@ AcpiTbLoadNamespace (
continue;
}
- /* Skip SSDT when it is overriden with DSDT */
- if (ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature),
- ACPI_SIG_SSDT) &&
- (AcpiGbl_RootTableList.Tables[i].Flags &
- ACPI_TABLE_ORIGIN_OVERRIDE))
+ /*
+ * Optionally do not load any SSDTs from the RSDT/XSDT. This can
+ * be useful for debugging ACPI problems on some machines.
+ */
+ if (AcpiGbl_DisableSsdtTableLoad)
{
+ ACPI_INFO ((AE_INFO, "Ignoring %4.4s at %p",
+ AcpiGbl_RootTableList.Tables[i].Signature.Ascii,
+ ACPI_CAST_PTR (void, AcpiGbl_RootTableList.Tables[i].Address)));
continue;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utbuffer.c b/sys/contrib/dev/acpica/components/utilities/utbuffer.c
new file mode 100644
index 0000000..508a940
--- /dev/null
+++ b/sys/contrib/dev/acpica/components/utilities/utbuffer.c
@@ -0,0 +1,220 @@
+/******************************************************************************
+ *
+ * Module Name: utbuffer - Buffer dump routines
+ *
+ *****************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2013, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#define __UTBUFFER_C__
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
+
+#define _COMPONENT ACPI_UTILITIES
+ ACPI_MODULE_NAME ("utbuffer")
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtDumpBuffer
+ *
+ * PARAMETERS: Buffer - Buffer to dump
+ * Count - Amount to dump, in bytes
+ * Display - BYTE, WORD, DWORD, or QWORD display:
+ * DB_BYTE_DISPLAY
+ * DB_WORD_DISPLAY
+ * DB_DWORD_DISPLAY
+ * DB_QWORD_DISPLAY
+ * BaseOffset - Beginning buffer offset (display only)
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Generic dump buffer in both hex and ascii.
+ *
+ ******************************************************************************/
+
+void
+AcpiUtDumpBuffer (
+ UINT8 *Buffer,
+ UINT32 Count,
+ UINT32 Display,
+ UINT32 BaseOffset)
+{
+ UINT32 i = 0;
+ UINT32 j;
+ UINT32 Temp32;
+ UINT8 BufChar;
+
+
+ if (!Buffer)
+ {
+ AcpiOsPrintf ("Null Buffer Pointer in DumpBuffer!\n");
+ return;
+ }
+
+ if ((Count < 4) || (Count & 0x01))
+ {
+ Display = DB_BYTE_DISPLAY;
+ }
+
+ /* Nasty little dump buffer routine! */
+
+ while (i < Count)
+ {
+ /* Print current offset */
+
+ AcpiOsPrintf ("%6.4X: ", (BaseOffset + i));
+
+ /* Print 16 hex chars */
+
+ for (j = 0; j < 16;)
+ {
+ if (i + j >= Count)
+ {
+ /* Dump fill spaces */
+
+ AcpiOsPrintf ("%*s", ((Display * 2) + 1), " ");
+ j += Display;
+ continue;
+ }
+
+ switch (Display)
+ {
+ case DB_BYTE_DISPLAY:
+ default: /* Default is BYTE display */
+
+ AcpiOsPrintf ("%02X ", Buffer[(ACPI_SIZE) i + j]);
+ break;
+
+ case DB_WORD_DISPLAY:
+
+ ACPI_MOVE_16_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
+ AcpiOsPrintf ("%04X ", Temp32);
+ break;
+
+ case DB_DWORD_DISPLAY:
+
+ ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
+ AcpiOsPrintf ("%08X ", Temp32);
+ break;
+
+ case DB_QWORD_DISPLAY:
+
+ ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
+ AcpiOsPrintf ("%08X", Temp32);
+
+ ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j + 4]);
+ AcpiOsPrintf ("%08X ", Temp32);
+ break;
+ }
+
+ j += Display;
+ }
+
+ /*
+ * Print the ASCII equivalent characters but watch out for the bad
+ * unprintable ones (printable chars are 0x20 through 0x7E)
+ */
+ AcpiOsPrintf (" ");
+ for (j = 0; j < 16; j++)
+ {
+ if (i + j >= Count)
+ {
+ AcpiOsPrintf ("\n");
+ return;
+ }
+
+ BufChar = Buffer[(ACPI_SIZE) i + j];
+ if (ACPI_IS_PRINT (BufChar))
+ {
+ AcpiOsPrintf ("%c", BufChar);
+ }
+ else
+ {
+ AcpiOsPrintf (".");
+ }
+ }
+
+ /* Done with that line. */
+
+ AcpiOsPrintf ("\n");
+ i += 16;
+ }
+
+ return;
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtDebugDumpBuffer
+ *
+ * PARAMETERS: Buffer - Buffer to dump
+ * Count - Amount to dump, in bytes
+ * Display - BYTE, WORD, DWORD, or QWORD display:
+ * DB_BYTE_DISPLAY
+ * DB_WORD_DISPLAY
+ * DB_DWORD_DISPLAY
+ * DB_QWORD_DISPLAY
+ * ComponentID - Caller's component ID
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Generic dump buffer in both hex and ascii.
+ *
+ ******************************************************************************/
+
+void
+AcpiUtDebugDumpBuffer (
+ UINT8 *Buffer,
+ UINT32 Count,
+ UINT32 Display,
+ UINT32 ComponentId)
+{
+
+ /* Only dump the buffer if tracing is enabled */
+
+ if (!((ACPI_LV_TABLES & AcpiDbgLevel) &&
+ (ComponentId & AcpiDbgLayer)))
+ {
+ return;
+ }
+
+ AcpiUtDumpBuffer (Buffer, Count, Display, 0);
+}
diff --git a/sys/contrib/dev/acpica/components/utilities/utcopy.c b/sys/contrib/dev/acpica/components/utilities/utcopy.c
index 696acf0..dacbc5c 100644
--- a/sys/contrib/dev/acpica/components/utilities/utcopy.c
+++ b/sys/contrib/dev/acpica/components/utilities/utcopy.c
@@ -172,7 +172,6 @@ AcpiUtCopyIsimpleToEsimple (
(ACPI_SIZE) InternalObject->String.Length + 1);
break;
-
case ACPI_TYPE_BUFFER:
ExternalObject->Buffer.Pointer = DataSpace;
@@ -185,13 +184,11 @@ AcpiUtCopyIsimpleToEsimple (
InternalObject->Buffer.Length);
break;
-
case ACPI_TYPE_INTEGER:
ExternalObject->Integer.Value = InternalObject->Integer.Value;
break;
-
case ACPI_TYPE_LOCAL_REFERENCE:
/* This is an object reference. */
@@ -199,7 +196,6 @@ AcpiUtCopyIsimpleToEsimple (
switch (InternalObject->Reference.Class)
{
case ACPI_REFCLASS_NAME:
-
/*
* For namepath, return the object handle ("reference")
* We are referring to the namespace node
@@ -218,7 +214,6 @@ AcpiUtCopyIsimpleToEsimple (
}
break;
-
case ACPI_TYPE_PROCESSOR:
ExternalObject->Processor.ProcId =
@@ -229,7 +224,6 @@ AcpiUtCopyIsimpleToEsimple (
InternalObject->Processor.Length;
break;
-
case ACPI_TYPE_POWER:
ExternalObject->PowerResource.SystemLevel =
@@ -239,7 +233,6 @@ AcpiUtCopyIsimpleToEsimple (
InternalObject->PowerResource.ResourceOrder;
break;
-
default:
/*
* There is no corresponding external object type
@@ -291,7 +284,6 @@ AcpiUtCopyIelementToEelement (
switch (ObjectType)
{
case ACPI_COPY_TYPE_SIMPLE:
-
/*
* This is a simple or null object
*/
@@ -303,9 +295,7 @@ AcpiUtCopyIelementToEelement (
}
break;
-
case ACPI_COPY_TYPE_PACKAGE:
-
/*
* Build the package object
*/
@@ -328,8 +318,8 @@ AcpiUtCopyIelementToEelement (
sizeof (ACPI_OBJECT));
break;
-
default:
+
return (AE_BAD_PARAMETER);
}
@@ -514,6 +504,7 @@ AcpiUtCopyEsimpleToIsimple (
return_ACPI_STATUS (AE_OK);
default:
+
/* All other types are not supported */
ACPI_ERROR ((AE_INFO,
@@ -546,7 +537,6 @@ AcpiUtCopyEsimpleToIsimple (
InternalObject->String.Length = ExternalObject->String.Length;
break;
-
case ACPI_TYPE_BUFFER:
InternalObject->Buffer.Pointer =
@@ -567,7 +557,6 @@ AcpiUtCopyEsimpleToIsimple (
InternalObject->Buffer.Flags |= AOPOBJ_DATA_VALID;
break;
-
case ACPI_TYPE_INTEGER:
InternalObject->Integer.Value = ExternalObject->Integer.Value;
@@ -582,7 +571,9 @@ AcpiUtCopyEsimpleToIsimple (
break;
default:
+
/* Other types can't get here */
+
break;
}
@@ -855,7 +846,9 @@ AcpiUtCopySimpleObject (
break;
default:
+
/* Nothing to do for other simple objects */
+
break;
}
@@ -929,9 +922,7 @@ AcpiUtCopyIelementToIelement (
}
break;
-
case ACPI_COPY_TYPE_PACKAGE:
-
/*
* This object is a package - go down another nesting level
* Create and build the package object
@@ -953,8 +944,8 @@ AcpiUtCopyIelementToIelement (
*ThisTargetPtr = TargetObject;
break;
-
default:
+
return (AE_BAD_PARAMETER);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utdebug.c b/sys/contrib/dev/acpica/components/utilities/utdebug.c
index a299680..1780595 100644
--- a/sys/contrib/dev/acpica/components/utilities/utdebug.c
+++ b/sys/contrib/dev/acpica/components/utilities/utdebug.c
@@ -1,6 +1,6 @@
/******************************************************************************
*
- * Module Name: utdebug - Debug print routines
+ * Module Name: utdebug - Debug print/trace routines
*
*****************************************************************************/
@@ -613,168 +613,3 @@ AcpiUtPtrExit (
}
#endif
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtDumpBuffer
- *
- * PARAMETERS: Buffer - Buffer to dump
- * Count - Amount to dump, in bytes
- * Display - BYTE, WORD, DWORD, or QWORD display
- * Offset - Beginning buffer offset (display only)
- *
- * RETURN: None
- *
- * DESCRIPTION: Generic dump buffer in both hex and ascii.
- *
- ******************************************************************************/
-
-void
-AcpiUtDumpBuffer (
- UINT8 *Buffer,
- UINT32 Count,
- UINT32 Display,
- UINT32 BaseOffset)
-{
- UINT32 i = 0;
- UINT32 j;
- UINT32 Temp32;
- UINT8 BufChar;
-
-
- if (!Buffer)
- {
- AcpiOsPrintf ("Null Buffer Pointer in DumpBuffer!\n");
- return;
- }
-
- if ((Count < 4) || (Count & 0x01))
- {
- Display = DB_BYTE_DISPLAY;
- }
-
- /* Nasty little dump buffer routine! */
-
- while (i < Count)
- {
- /* Print current offset */
-
- AcpiOsPrintf ("%6.4X: ", (BaseOffset + i));
-
- /* Print 16 hex chars */
-
- for (j = 0; j < 16;)
- {
- if (i + j >= Count)
- {
- /* Dump fill spaces */
-
- AcpiOsPrintf ("%*s", ((Display * 2) + 1), " ");
- j += Display;
- continue;
- }
-
- switch (Display)
- {
- case DB_BYTE_DISPLAY:
- default: /* Default is BYTE display */
-
- AcpiOsPrintf ("%02X ", Buffer[(ACPI_SIZE) i + j]);
- break;
-
-
- case DB_WORD_DISPLAY:
-
- ACPI_MOVE_16_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
- AcpiOsPrintf ("%04X ", Temp32);
- break;
-
-
- case DB_DWORD_DISPLAY:
-
- ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
- AcpiOsPrintf ("%08X ", Temp32);
- break;
-
-
- case DB_QWORD_DISPLAY:
-
- ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]);
- AcpiOsPrintf ("%08X", Temp32);
-
- ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j + 4]);
- AcpiOsPrintf ("%08X ", Temp32);
- break;
- }
-
- j += Display;
- }
-
- /*
- * Print the ASCII equivalent characters but watch out for the bad
- * unprintable ones (printable chars are 0x20 through 0x7E)
- */
- AcpiOsPrintf (" ");
- for (j = 0; j < 16; j++)
- {
- if (i + j >= Count)
- {
- AcpiOsPrintf ("\n");
- return;
- }
-
- BufChar = Buffer[(ACPI_SIZE) i + j];
- if (ACPI_IS_PRINT (BufChar))
- {
- AcpiOsPrintf ("%c", BufChar);
- }
- else
- {
- AcpiOsPrintf (".");
- }
- }
-
- /* Done with that line. */
-
- AcpiOsPrintf ("\n");
- i += 16;
- }
-
- return;
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtDebugDumpBuffer
- *
- * PARAMETERS: Buffer - Buffer to dump
- * Count - Amount to dump, in bytes
- * Display - BYTE, WORD, DWORD, or QWORD display
- * ComponentID - Caller's component ID
- *
- * RETURN: None
- *
- * DESCRIPTION: Generic dump buffer in both hex and ascii.
- *
- ******************************************************************************/
-
-void
-AcpiUtDebugDumpBuffer (
- UINT8 *Buffer,
- UINT32 Count,
- UINT32 Display,
- UINT32 ComponentId)
-{
-
- /* Only dump the buffer if tracing is enabled */
-
- if (!((ACPI_LV_TABLES & AcpiDbgLevel) &&
- (ComponentId & AcpiDbgLayer)))
- {
- return;
- }
-
- AcpiUtDumpBuffer (Buffer, Count, Display, 0);
-}
diff --git a/sys/contrib/dev/acpica/components/utilities/utdelete.c b/sys/contrib/dev/acpica/components/utilities/utdelete.c
index 94684c8..6f1f89b 100644
--- a/sys/contrib/dev/acpica/components/utilities/utdelete.c
+++ b/sys/contrib/dev/acpica/components/utilities/utdelete.c
@@ -118,7 +118,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_BUFFER:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** Buffer %p, ptr %p\n",
@@ -134,7 +133,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_PACKAGE:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, " **** Package of count %X\n",
@@ -150,7 +148,6 @@ AcpiUtDeleteInternalObj (
ObjPointer = Object->Package.Elements;
break;
-
/*
* These objects have a possible list of notify handlers.
* Device object also may have a GPE block.
@@ -178,7 +175,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_MUTEX:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
@@ -202,7 +198,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_EVENT:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
@@ -213,7 +208,6 @@ AcpiUtDeleteInternalObj (
Object->Event.OsSemaphore = NULL;
break;
-
case ACPI_TYPE_METHOD:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
@@ -229,7 +223,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_REGION:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
@@ -298,7 +291,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_BUFFER_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
@@ -311,7 +303,6 @@ AcpiUtDeleteInternalObj (
}
break;
-
case ACPI_TYPE_LOCAL_BANK_FIELD:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
@@ -324,8 +315,8 @@ AcpiUtDeleteInternalObj (
}
break;
-
default:
+
break;
}
@@ -557,7 +548,6 @@ AcpiUtUpdateObjectReference (
case ACPI_TYPE_PROCESSOR:
case ACPI_TYPE_POWER:
case ACPI_TYPE_THERMAL:
-
/*
* Update the notify objects for these types (if present)
* Two lists, system and device notify handlers.
@@ -668,6 +658,7 @@ AcpiUtUpdateObjectReference (
case ACPI_TYPE_REGION:
default:
+
break; /* No subobjects for all other types */
}
diff --git a/sys/contrib/dev/acpica/components/utilities/uterror.c b/sys/contrib/dev/acpica/components/utilities/uterror.c
new file mode 100644
index 0000000..b7aef18
--- /dev/null
+++ b/sys/contrib/dev/acpica/components/utilities/uterror.c
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ *
+ * Module Name: uterror - Various internal error/warning output functions
+ *
+ ******************************************************************************/
+
+/*
+ * Copyright (C) 2000 - 2013, Intel Corp.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions, and the following disclaimer,
+ * without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ * substantially similar to the "NO WARRANTY" disclaimer below
+ * ("Disclaimer") and any redistribution must be conditioned upon
+ * including a substantially similar Disclaimer requirement for further
+ * binary redistribution.
+ * 3. Neither the names of the above-listed copyright holders nor the names
+ * of any contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGES.
+ */
+
+#define __UTERROR_C__
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
+#include <contrib/dev/acpica/include/acnamesp.h>
+
+
+#define _COMPONENT ACPI_UTILITIES
+ ACPI_MODULE_NAME ("uterror")
+
+
+/*
+ * This module contains internal error functions that may
+ * be configured out.
+ */
+#if !defined (ACPI_NO_ERROR_MESSAGES)
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtPredefinedWarning
+ *
+ * PARAMETERS: ModuleName - Caller's module name (for error output)
+ * LineNumber - Caller's line number (for error output)
+ * Pathname - Full pathname to the node
+ * NodeFlags - From Namespace node for the method/object
+ * Format - Printf format string + additional args
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Warnings for the predefined validation module. Messages are
+ * only emitted the first time a problem with a particular
+ * method/object is detected. This prevents a flood of error
+ * messages for methods that are repeatedly evaluated.
+ *
+ ******************************************************************************/
+
+void ACPI_INTERNAL_VAR_XFACE
+AcpiUtPredefinedWarning (
+ const char *ModuleName,
+ UINT32 LineNumber,
+ char *Pathname,
+ UINT8 NodeFlags,
+ const char *Format,
+ ...)
+{
+ va_list ArgList;
+
+
+ /*
+ * Warning messages for this method/object will be disabled after the
+ * first time a validation fails or an object is successfully repaired.
+ */
+ if (NodeFlags & ANOBJ_EVALUATED)
+ {
+ return;
+ }
+
+ AcpiOsPrintf (ACPI_MSG_WARNING "%s: ", Pathname);
+
+ va_start (ArgList, Format);
+ AcpiOsVprintf (Format, ArgList);
+ ACPI_MSG_SUFFIX;
+ va_end (ArgList);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtPredefinedInfo
+ *
+ * PARAMETERS: ModuleName - Caller's module name (for error output)
+ * LineNumber - Caller's line number (for error output)
+ * Pathname - Full pathname to the node
+ * NodeFlags - From Namespace node for the method/object
+ * Format - Printf format string + additional args
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Info messages for the predefined validation module. Messages
+ * are only emitted the first time a problem with a particular
+ * method/object is detected. This prevents a flood of
+ * messages for methods that are repeatedly evaluated.
+ *
+ ******************************************************************************/
+
+void ACPI_INTERNAL_VAR_XFACE
+AcpiUtPredefinedInfo (
+ const char *ModuleName,
+ UINT32 LineNumber,
+ char *Pathname,
+ UINT8 NodeFlags,
+ const char *Format,
+ ...)
+{
+ va_list ArgList;
+
+
+ /*
+ * Warning messages for this method/object will be disabled after the
+ * first time a validation fails or an object is successfully repaired.
+ */
+ if (NodeFlags & ANOBJ_EVALUATED)
+ {
+ return;
+ }
+
+ AcpiOsPrintf (ACPI_MSG_INFO "%s: ", Pathname);
+
+ va_start (ArgList, Format);
+ AcpiOsVprintf (Format, ArgList);
+ ACPI_MSG_SUFFIX;
+ va_end (ArgList);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtPredefinedBiosError
+ *
+ * PARAMETERS: ModuleName - Caller's module name (for error output)
+ * LineNumber - Caller's line number (for error output)
+ * Pathname - Full pathname to the node
+ * NodeFlags - From Namespace node for the method/object
+ * Format - Printf format string + additional args
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: BIOS error message for predefined names. Messages
+ * are only emitted the first time a problem with a particular
+ * method/object is detected. This prevents a flood of
+ * messages for methods that are repeatedly evaluated.
+ *
+ ******************************************************************************/
+
+void ACPI_INTERNAL_VAR_XFACE
+AcpiUtPredefinedBiosError (
+ const char *ModuleName,
+ UINT32 LineNumber,
+ char *Pathname,
+ UINT8 NodeFlags,
+ const char *Format,
+ ...)
+{
+ va_list ArgList;
+
+
+ /*
+ * Warning messages for this method/object will be disabled after the
+ * first time a validation fails or an object is successfully repaired.
+ */
+ if (NodeFlags & ANOBJ_EVALUATED)
+ {
+ return;
+ }
+
+ AcpiOsPrintf (ACPI_MSG_BIOS_ERROR "%s: ", Pathname);
+
+ va_start (ArgList, Format);
+ AcpiOsVprintf (Format, ArgList);
+ ACPI_MSG_SUFFIX;
+ va_end (ArgList);
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtNamespaceError
+ *
+ * PARAMETERS: ModuleName - Caller's module name (for error output)
+ * LineNumber - Caller's line number (for error output)
+ * InternalName - Name or path of the namespace node
+ * LookupStatus - Exception code from NS lookup
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Print error message with the full pathname for the NS node.
+ *
+ ******************************************************************************/
+
+void
+AcpiUtNamespaceError (
+ const char *ModuleName,
+ UINT32 LineNumber,
+ const char *InternalName,
+ ACPI_STATUS LookupStatus)
+{
+ ACPI_STATUS Status;
+ UINT32 BadName;
+ char *Name = NULL;
+
+
+ ACPI_MSG_REDIRECT_BEGIN;
+ AcpiOsPrintf (ACPI_MSG_ERROR);
+
+ if (LookupStatus == AE_BAD_CHARACTER)
+ {
+ /* There is a non-ascii character in the name */
+
+ ACPI_MOVE_32_TO_32 (&BadName, ACPI_CAST_PTR (UINT32, InternalName));
+ AcpiOsPrintf ("[0x%.8X] (NON-ASCII)", BadName);
+ }
+ else
+ {
+ /* Convert path to external format */
+
+ Status = AcpiNsExternalizeName (ACPI_UINT32_MAX,
+ InternalName, NULL, &Name);
+
+ /* Print target name */
+
+ if (ACPI_SUCCESS (Status))
+ {
+ AcpiOsPrintf ("[%s]", Name);
+ }
+ else
+ {
+ AcpiOsPrintf ("[COULD NOT EXTERNALIZE NAME]");
+ }
+
+ if (Name)
+ {
+ ACPI_FREE (Name);
+ }
+ }
+
+ AcpiOsPrintf (" Namespace lookup failure, %s",
+ AcpiFormatException (LookupStatus));
+
+ ACPI_MSG_SUFFIX;
+ ACPI_MSG_REDIRECT_END;
+}
+
+
+/*******************************************************************************
+ *
+ * FUNCTION: AcpiUtMethodError
+ *
+ * PARAMETERS: ModuleName - Caller's module name (for error output)
+ * LineNumber - Caller's line number (for error output)
+ * Message - Error message to use on failure
+ * PrefixNode - Prefix relative to the path
+ * Path - Path to the node (optional)
+ * MethodStatus - Execution status
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Print error message with the full pathname for the method.
+ *
+ ******************************************************************************/
+
+void
+AcpiUtMethodError (
+ const char *ModuleName,
+ UINT32 LineNumber,
+ const char *Message,
+ ACPI_NAMESPACE_NODE *PrefixNode,
+ const char *Path,
+ ACPI_STATUS MethodStatus)
+{
+ ACPI_STATUS Status;
+ ACPI_NAMESPACE_NODE *Node = PrefixNode;
+
+
+ ACPI_MSG_REDIRECT_BEGIN;
+ AcpiOsPrintf (ACPI_MSG_ERROR);
+
+ if (Path)
+ {
+ Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH,
+ &Node);
+ if (ACPI_FAILURE (Status))
+ {
+ AcpiOsPrintf ("[Could not get node by pathname]");
+ }
+ }
+
+ AcpiNsPrintNodePathname (Node, Message);
+ AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus));
+
+ ACPI_MSG_SUFFIX;
+ ACPI_MSG_REDIRECT_END;
+}
+
+#endif /* ACPI_NO_ERROR_MESSAGES */
diff --git a/sys/contrib/dev/acpica/components/utilities/uteval.c b/sys/contrib/dev/acpica/components/utilities/uteval.c
index dfe2efa..d19210f 100644
--- a/sys/contrib/dev/acpica/components/utilities/uteval.c
+++ b/sys/contrib/dev/acpica/components/utilities/uteval.c
@@ -136,22 +136,27 @@ AcpiUtEvaluateObject (
switch ((Info->ReturnObject)->Common.Type)
{
case ACPI_TYPE_INTEGER:
+
ReturnBtype = ACPI_BTYPE_INTEGER;
break;
case ACPI_TYPE_BUFFER:
+
ReturnBtype = ACPI_BTYPE_BUFFER;
break;
case ACPI_TYPE_STRING:
+
ReturnBtype = ACPI_BTYPE_STRING;
break;
case ACPI_TYPE_PACKAGE:
+
ReturnBtype = ACPI_BTYPE_PACKAGE;
break;
default:
+
ReturnBtype = 0;
break;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utexcep.c b/sys/contrib/dev/acpica/components/utilities/utexcep.c
index 84df77d..d69dbf0 100644
--- a/sys/contrib/dev/acpica/components/utilities/utexcep.c
+++ b/sys/contrib/dev/acpica/components/utilities/utexcep.c
@@ -167,6 +167,7 @@ AcpiUtValidateException (
break;
default:
+
break;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utids.c b/sys/contrib/dev/acpica/components/utilities/utids.c
index c73c8ed..b001767 100644
--- a/sys/contrib/dev/acpica/components/utilities/utids.c
+++ b/sys/contrib/dev/acpica/components/utilities/utids.c
@@ -375,14 +375,17 @@ AcpiUtExecute_CID (
switch (CidObjects[i]->Common.Type)
{
case ACPI_TYPE_INTEGER:
+
StringAreaSize += ACPI_EISAID_STRING_SIZE;
break;
case ACPI_TYPE_STRING:
+
StringAreaSize += CidObjects[i]->String.Length + 1;
break;
default:
+
Status = AE_TYPE;
goto Cleanup;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utmisc.c b/sys/contrib/dev/acpica/components/utilities/utmisc.c
index 7d013fc..6ff6b2a 100644
--- a/sys/contrib/dev/acpica/components/utilities/utmisc.c
+++ b/sys/contrib/dev/acpica/components/utilities/utmisc.c
@@ -429,10 +429,12 @@ AcpiUtDisplayInitPathname (
switch (Type)
{
case ACPI_TYPE_METHOD:
+
AcpiOsPrintf ("Executing ");
break;
default:
+
AcpiOsPrintf ("Initializing ");
break;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utobject.c b/sys/contrib/dev/acpica/components/utilities/utobject.c
index daa8e40..46c3514 100644
--- a/sys/contrib/dev/acpica/components/utilities/utobject.c
+++ b/sys/contrib/dev/acpica/components/utilities/utobject.c
@@ -140,6 +140,7 @@ AcpiUtCreateInternalObjectDbg (
break;
default:
+
/* All others have no secondary object */
break;
}
@@ -397,6 +398,7 @@ AcpiUtValidInternalObject (
return (TRUE);
default:
+
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
"%p is not not an ACPI operand obj [%s]\n",
Object, AcpiUtGetDescriptorName (Object)));
@@ -556,13 +558,11 @@ AcpiUtGetSimpleObjectSize (
Length += (ACPI_SIZE) InternalObject->String.Length + 1;
break;
-
case ACPI_TYPE_BUFFER:
Length += (ACPI_SIZE) InternalObject->Buffer.Length;
break;
-
case ACPI_TYPE_INTEGER:
case ACPI_TYPE_PROCESSOR:
case ACPI_TYPE_POWER:
@@ -571,13 +571,11 @@ AcpiUtGetSimpleObjectSize (
break;
-
case ACPI_TYPE_LOCAL_REFERENCE:
switch (InternalObject->Reference.Class)
{
case ACPI_REFCLASS_NAME:
-
/*
* Get the actual length of the full pathname to this object.
* The reference will be converted to the pathname to the object
@@ -592,7 +590,6 @@ AcpiUtGetSimpleObjectSize (
break;
default:
-
/*
* No other reference opcodes are supported.
* Notably, Locals and Args are not supported, but this may be
@@ -607,7 +604,6 @@ AcpiUtGetSimpleObjectSize (
}
break;
-
default:
ACPI_ERROR ((AE_INFO, "Cannot convert to external object - "
@@ -656,7 +652,6 @@ AcpiUtGetElementLength (
switch (ObjectType)
{
case ACPI_COPY_TYPE_SIMPLE:
-
/*
* Simple object - just get the size (Null object/entry is handled
* here also) and sum it into the running package length
@@ -670,7 +665,6 @@ AcpiUtGetElementLength (
Info->Length += ObjectSpace;
break;
-
case ACPI_COPY_TYPE_PACKAGE:
/* Package object - nothing much to do here, let the walk handle it */
@@ -679,7 +673,6 @@ AcpiUtGetElementLength (
State->Pkg.ThisTargetObj = NULL;
break;
-
default:
/* No other types allowed */
diff --git a/sys/contrib/dev/acpica/components/utilities/utstring.c b/sys/contrib/dev/acpica/components/utilities/utstring.c
index 49a47fe..4b1545e 100644
--- a/sys/contrib/dev/acpica/components/utilities/utstring.c
+++ b/sys/contrib/dev/acpica/components/utilities/utstring.c
@@ -220,10 +220,13 @@ AcpiUtStrtoul64 (
{
case ACPI_ANY_BASE:
case 16:
+
break;
default:
+
/* Invalid Base */
+
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
@@ -423,36 +426,44 @@ AcpiUtPrintString (
switch (String[i])
{
case 0x07:
+
AcpiOsPrintf ("\\a"); /* BELL */
break;
case 0x08:
+
AcpiOsPrintf ("\\b"); /* BACKSPACE */
break;
case 0x0C:
+
AcpiOsPrintf ("\\f"); /* FORMFEED */
break;
case 0x0A:
+
AcpiOsPrintf ("\\n"); /* LINEFEED */
break;
case 0x0D:
+
AcpiOsPrintf ("\\r"); /* CARRIAGE RETURN*/
break;
case 0x09:
+
AcpiOsPrintf ("\\t"); /* HORIZONTAL TAB */
break;
case 0x0B:
+
AcpiOsPrintf ("\\v"); /* VERTICAL TAB */
break;
case '\'': /* Single Quote */
case '\"': /* Double Quote */
case '\\': /* Backslash */
+
AcpiOsPrintf ("\\%c", (int) String[i]);
break;
@@ -530,7 +541,8 @@ AcpiUtValidAcpiChar (
*
* FUNCTION: AcpiUtValidAcpiName
*
- * PARAMETERS: Name - The name to be examined
+ * PARAMETERS: Name - The name to be examined. Does not have to
+ * be NULL terminated string.
*
* RETURN: TRUE if the name is valid, FALSE otherwise
*
@@ -543,7 +555,7 @@ AcpiUtValidAcpiChar (
BOOLEAN
AcpiUtValidAcpiName (
- UINT32 Name)
+ char *Name)
{
UINT32 i;
@@ -553,7 +565,7 @@ AcpiUtValidAcpiName (
for (i = 0; i < ACPI_NAME_SIZE; i++)
{
- if (!AcpiUtValidAcpiChar ((ACPI_CAST_PTR (char, &Name))[i], i))
+ if (!AcpiUtValidAcpiChar (Name[i], i))
{
return (FALSE);
}
diff --git a/sys/contrib/dev/acpica/components/utilities/uttrack.c b/sys/contrib/dev/acpica/components/utilities/uttrack.c
index c829fb0..5c381f0 100644
--- a/sys/contrib/dev/acpica/components/utilities/uttrack.c
+++ b/sys/contrib/dev/acpica/components/utilities/uttrack.c
@@ -675,6 +675,7 @@ AcpiUtDumpAllocations (
switch (ACPI_GET_DESCRIPTOR_TYPE (Descriptor))
{
case ACPI_DESC_TYPE_OPERAND:
+
if (Element->Size == sizeof (ACPI_OPERAND_OBJECT))
{
DescriptorType = ACPI_DESC_TYPE_OPERAND;
@@ -682,6 +683,7 @@ AcpiUtDumpAllocations (
break;
case ACPI_DESC_TYPE_PARSER:
+
if (Element->Size == sizeof (ACPI_PARSE_OBJECT))
{
DescriptorType = ACPI_DESC_TYPE_PARSER;
@@ -689,6 +691,7 @@ AcpiUtDumpAllocations (
break;
case ACPI_DESC_TYPE_NAMED:
+
if (Element->Size == sizeof (ACPI_NAMESPACE_NODE))
{
DescriptorType = ACPI_DESC_TYPE_NAMED;
@@ -696,6 +699,7 @@ AcpiUtDumpAllocations (
break;
default:
+
break;
}
@@ -704,22 +708,26 @@ AcpiUtDumpAllocations (
switch (DescriptorType)
{
case ACPI_DESC_TYPE_OPERAND:
+
AcpiOsPrintf ("%12.12s RefCount 0x%04X\n",
AcpiUtGetTypeName (Descriptor->Object.Common.Type),
Descriptor->Object.Common.ReferenceCount);
break;
case ACPI_DESC_TYPE_PARSER:
+
AcpiOsPrintf ("AmlOpcode 0x%04hX\n",
Descriptor->Op.Asl.AmlOpcode);
break;
case ACPI_DESC_TYPE_NAMED:
+
AcpiOsPrintf ("%4.4s\n",
AcpiUtGetNodeName (&Descriptor->Node));
break;
default:
+
AcpiOsPrintf ( "\n");
break;
}
diff --git a/sys/contrib/dev/acpica/components/utilities/utxferror.c b/sys/contrib/dev/acpica/components/utilities/utxferror.c
index e27d47b..8f11b29 100644
--- a/sys/contrib/dev/acpica/components/utilities/utxferror.c
+++ b/sys/contrib/dev/acpica/components/utilities/utxferror.c
@@ -45,7 +45,6 @@
#include <contrib/dev/acpica/include/acpi.h>
#include <contrib/dev/acpica/include/accommon.h>
-#include <contrib/dev/acpica/include/acnamesp.h>
#define _COMPONENT ACPI_UTILITIES
@@ -54,48 +53,7 @@
/*
* This module is used for the in-kernel ACPICA as well as the ACPICA
* tools/applications.
- *
- * For the iASL compiler case, the output is redirected to stderr so that
- * any of the various ACPI errors and warnings do not appear in the output
- * files, for either the compiler or disassembler portions of the tool.
- */
-#ifdef ACPI_ASL_COMPILER
-#include <stdio.h>
-
-extern FILE *AcpiGbl_OutputFile;
-
-#define ACPI_MSG_REDIRECT_BEGIN \
- FILE *OutputFile = AcpiGbl_OutputFile; \
- AcpiOsRedirectOutput (stderr);
-
-#define ACPI_MSG_REDIRECT_END \
- AcpiOsRedirectOutput (OutputFile);
-
-#else
-/*
- * non-iASL case - no redirection, nothing to do
- */
-#define ACPI_MSG_REDIRECT_BEGIN
-#define ACPI_MSG_REDIRECT_END
-#endif
-
-/*
- * Common message prefixes
- */
-#define ACPI_MSG_ERROR "ACPI Error: "
-#define ACPI_MSG_EXCEPTION "ACPI Exception: "
-#define ACPI_MSG_WARNING "ACPI Warning: "
-#define ACPI_MSG_INFO "ACPI: "
-
-#define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): "
-#define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): "
-
-/*
- * Common message suffix
*/
-#define ACPI_MSG_SUFFIX \
- AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
-
/*******************************************************************************
*
@@ -336,278 +294,3 @@ AcpiBiosWarning (
}
ACPI_EXPORT_SYMBOL (AcpiBiosWarning)
-
-
-/*
- * The remainder of this module contains internal error functions that may
- * be configured out.
- */
-#if !defined (ACPI_NO_ERROR_MESSAGES) && !defined (ACPI_BIN_APP)
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtPredefinedWarning
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * Pathname - Full pathname to the node
- * NodeFlags - From Namespace node for the method/object
- * Format - Printf format string + additional args
- *
- * RETURN: None
- *
- * DESCRIPTION: Warnings for the predefined validation module. Messages are
- * only emitted the first time a problem with a particular
- * method/object is detected. This prevents a flood of error
- * messages for methods that are repeatedly evaluated.
- *
- ******************************************************************************/
-
-void ACPI_INTERNAL_VAR_XFACE
-AcpiUtPredefinedWarning (
- const char *ModuleName,
- UINT32 LineNumber,
- char *Pathname,
- UINT8 NodeFlags,
- const char *Format,
- ...)
-{
- va_list ArgList;
-
-
- /*
- * Warning messages for this method/object will be disabled after the
- * first time a validation fails or an object is successfully repaired.
- */
- if (NodeFlags & ANOBJ_EVALUATED)
- {
- return;
- }
-
- AcpiOsPrintf (ACPI_MSG_WARNING "%s: ", Pathname);
-
- va_start (ArgList, Format);
- AcpiOsVprintf (Format, ArgList);
- ACPI_MSG_SUFFIX;
- va_end (ArgList);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtPredefinedInfo
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * Pathname - Full pathname to the node
- * NodeFlags - From Namespace node for the method/object
- * Format - Printf format string + additional args
- *
- * RETURN: None
- *
- * DESCRIPTION: Info messages for the predefined validation module. Messages
- * are only emitted the first time a problem with a particular
- * method/object is detected. This prevents a flood of
- * messages for methods that are repeatedly evaluated.
- *
- ******************************************************************************/
-
-void ACPI_INTERNAL_VAR_XFACE
-AcpiUtPredefinedInfo (
- const char *ModuleName,
- UINT32 LineNumber,
- char *Pathname,
- UINT8 NodeFlags,
- const char *Format,
- ...)
-{
- va_list ArgList;
-
-
- /*
- * Warning messages for this method/object will be disabled after the
- * first time a validation fails or an object is successfully repaired.
- */
- if (NodeFlags & ANOBJ_EVALUATED)
- {
- return;
- }
-
- AcpiOsPrintf (ACPI_MSG_INFO "%s: ", Pathname);
-
- va_start (ArgList, Format);
- AcpiOsVprintf (Format, ArgList);
- ACPI_MSG_SUFFIX;
- va_end (ArgList);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtPredefinedBiosError
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * Pathname - Full pathname to the node
- * NodeFlags - From Namespace node for the method/object
- * Format - Printf format string + additional args
- *
- * RETURN: None
- *
- * DESCRIPTION: BIOS error message for predefined names. Messages
- * are only emitted the first time a problem with a particular
- * method/object is detected. This prevents a flood of
- * messages for methods that are repeatedly evaluated.
- *
- ******************************************************************************/
-
-void ACPI_INTERNAL_VAR_XFACE
-AcpiUtPredefinedBiosError (
- const char *ModuleName,
- UINT32 LineNumber,
- char *Pathname,
- UINT8 NodeFlags,
- const char *Format,
- ...)
-{
- va_list ArgList;
-
-
- /*
- * Warning messages for this method/object will be disabled after the
- * first time a validation fails or an object is successfully repaired.
- */
- if (NodeFlags & ANOBJ_EVALUATED)
- {
- return;
- }
-
- AcpiOsPrintf (ACPI_MSG_BIOS_ERROR "%s: ", Pathname);
-
- va_start (ArgList, Format);
- AcpiOsVprintf (Format, ArgList);
- ACPI_MSG_SUFFIX;
- va_end (ArgList);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtNamespaceError
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * InternalName - Name or path of the namespace node
- * LookupStatus - Exception code from NS lookup
- *
- * RETURN: None
- *
- * DESCRIPTION: Print error message with the full pathname for the NS node.
- *
- ******************************************************************************/
-
-void
-AcpiUtNamespaceError (
- const char *ModuleName,
- UINT32 LineNumber,
- const char *InternalName,
- ACPI_STATUS LookupStatus)
-{
- ACPI_STATUS Status;
- UINT32 BadName;
- char *Name = NULL;
-
-
- ACPI_MSG_REDIRECT_BEGIN;
- AcpiOsPrintf (ACPI_MSG_ERROR);
-
- if (LookupStatus == AE_BAD_CHARACTER)
- {
- /* There is a non-ascii character in the name */
-
- ACPI_MOVE_32_TO_32 (&BadName, ACPI_CAST_PTR (UINT32, InternalName));
- AcpiOsPrintf ("[0x%.8X] (NON-ASCII)", BadName);
- }
- else
- {
- /* Convert path to external format */
-
- Status = AcpiNsExternalizeName (ACPI_UINT32_MAX,
- InternalName, NULL, &Name);
-
- /* Print target name */
-
- if (ACPI_SUCCESS (Status))
- {
- AcpiOsPrintf ("[%s]", Name);
- }
- else
- {
- AcpiOsPrintf ("[COULD NOT EXTERNALIZE NAME]");
- }
-
- if (Name)
- {
- ACPI_FREE (Name);
- }
- }
-
- AcpiOsPrintf (" Namespace lookup failure, %s",
- AcpiFormatException (LookupStatus));
-
- ACPI_MSG_SUFFIX;
- ACPI_MSG_REDIRECT_END;
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiUtMethodError
- *
- * PARAMETERS: ModuleName - Caller's module name (for error output)
- * LineNumber - Caller's line number (for error output)
- * Message - Error message to use on failure
- * PrefixNode - Prefix relative to the path
- * Path - Path to the node (optional)
- * MethodStatus - Execution status
- *
- * RETURN: None
- *
- * DESCRIPTION: Print error message with the full pathname for the method.
- *
- ******************************************************************************/
-
-void
-AcpiUtMethodError (
- const char *ModuleName,
- UINT32 LineNumber,
- const char *Message,
- ACPI_NAMESPACE_NODE *PrefixNode,
- const char *Path,
- ACPI_STATUS MethodStatus)
-{
- ACPI_STATUS Status;
- ACPI_NAMESPACE_NODE *Node = PrefixNode;
-
-
- ACPI_MSG_REDIRECT_BEGIN;
- AcpiOsPrintf (ACPI_MSG_ERROR);
-
- if (Path)
- {
- Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH,
- &Node);
- if (ACPI_FAILURE (Status))
- {
- AcpiOsPrintf ("[Could not get node by pathname]");
- }
- }
-
- AcpiNsPrintNodePathname (Node, Message);
- AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus));
-
- ACPI_MSG_SUFFIX;
- ACPI_MSG_REDIRECT_END;
-}
-
-#endif /* ACPI_NO_ERROR_MESSAGES */
diff --git a/sys/contrib/dev/acpica/include/acapps.h b/sys/contrib/dev/acpica/include/acapps.h
index acc6e4a..fc95423 100644
--- a/sys/contrib/dev/acpica/include/acapps.h
+++ b/sys/contrib/dev/acpica/include/acapps.h
@@ -103,11 +103,18 @@ AcpiGetopt(
char **argv,
char *opts);
+int
+AcpiGetoptArgument (
+ int argc,
+ char **argv);
+
extern int AcpiGbl_Optind;
extern int AcpiGbl_Opterr;
+extern int AcpiGbl_SubOptChar;
extern char *AcpiGbl_Optarg;
+#ifndef ACPI_DUMP_APP
/*
* adisasm
*/
@@ -212,5 +219,6 @@ AdWriteTable (
UINT32 Length,
char *TableName,
char *OemTableId);
+#endif
#endif /* _ACAPPS */
diff --git a/sys/contrib/dev/acpica/include/acglobal.h b/sys/contrib/dev/acpica/include/acglobal.h
index 91661d6..32ae55f 100644
--- a/sys/contrib/dev/acpica/include/acglobal.h
+++ b/sys/contrib/dev/acpica/include/acglobal.h
@@ -134,6 +134,12 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_TruncateIoAddresses, FALSE);
*/
UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableAutoRepair, FALSE);
+/*
+ * Optionally do not load any SSDTs from the RSDT/XSDT during initialization.
+ * This can be useful for debugging ACPI problems on some machines.
+ */
+UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableSsdtTableLoad, FALSE);
+
/* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */
diff --git a/sys/contrib/dev/acpica/include/acpiosxf.h b/sys/contrib/dev/acpica/include/acpiosxf.h
index ae9cf3c..747a4ed 100644
--- a/sys/contrib/dev/acpica/include/acpiosxf.h
+++ b/sys/contrib/dev/acpica/include/acpiosxf.h
@@ -391,6 +391,28 @@ AcpiOsGetLine (
/*
+ * Obtain ACPI table(s)
+ */
+ACPI_STATUS
+AcpiOsGetTableByName (
+ char *Signature,
+ UINT32 Instance,
+ ACPI_TABLE_HEADER **Table,
+ ACPI_PHYSICAL_ADDRESS *Address);
+
+ACPI_STATUS
+AcpiOsGetTableByIndex (
+ UINT32 Index,
+ ACPI_TABLE_HEADER **Table,
+ ACPI_PHYSICAL_ADDRESS *Address);
+
+ACPI_STATUS
+AcpiOsGetTableByAddress (
+ ACPI_PHYSICAL_ADDRESS Address,
+ ACPI_TABLE_HEADER **Table);
+
+
+/*
* Directory manipulation
*/
void *
diff --git a/sys/contrib/dev/acpica/include/acpixf.h b/sys/contrib/dev/acpica/include/acpixf.h
index 652c87c..10f4e47 100644
--- a/sys/contrib/dev/acpica/include/acpixf.h
+++ b/sys/contrib/dev/acpica/include/acpixf.h
@@ -47,7 +47,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20130418
+#define ACPI_CA_VERSION 0x20130517
#include <contrib/dev/acpica/include/acconfig.h>
#include <contrib/dev/acpica/include/actypes.h>
@@ -79,6 +79,7 @@ extern UINT8 AcpiGbl_EnableAmlDebugObject;
extern UINT8 AcpiGbl_CopyDsdtLocally;
extern UINT8 AcpiGbl_TruncateIoAddresses;
extern UINT8 AcpiGbl_DisableAutoRepair;
+extern UINT8 AcpiGbl_DisableSsdtTableLoad;
/*
diff --git a/sys/contrib/dev/acpica/include/actypes.h b/sys/contrib/dev/acpica/include/actypes.h
index 9c8ec7d..840c146 100644
--- a/sys/contrib/dev/acpica/include/actypes.h
+++ b/sys/contrib/dev/acpica/include/actypes.h
@@ -310,6 +310,14 @@ typedef UINT32 ACPI_PHYSICAL_ADDRESS;
#define ACPI_EXPORT_SYMBOL(Symbol)
#endif
+/*
+ * Compiler/Clibrary-dependent debug initialization. Used for ACPICA
+ * utilities only.
+ */
+#ifndef ACPI_DEBUG_INITIALIZE
+#define ACPI_DEBUG_INITIALIZE()
+#endif
+
/******************************************************************************
*
diff --git a/sys/contrib/dev/acpica/include/acutils.h b/sys/contrib/dev/acpica/include/acutils.h
index b4ea7e5..c79240c 100644
--- a/sys/contrib/dev/acpica/include/acutils.h
+++ b/sys/contrib/dev/acpica/include/acutils.h
@@ -88,6 +88,49 @@ extern const char *AcpiGbl_FcDecode[];
extern const char *AcpiGbl_PtDecode[];
#endif
+/*
+ * For the iASL compiler case, the output is redirected to stderr so that
+ * any of the various ACPI errors and warnings do not appear in the output
+ * files, for either the compiler or disassembler portions of the tool.
+ */
+#ifdef ACPI_ASL_COMPILER
+
+#include <stdio.h>
+extern FILE *AcpiGbl_OutputFile;
+
+#define ACPI_MSG_REDIRECT_BEGIN \
+ FILE *OutputFile = AcpiGbl_OutputFile; \
+ AcpiOsRedirectOutput (stderr);
+
+#define ACPI_MSG_REDIRECT_END \
+ AcpiOsRedirectOutput (OutputFile);
+
+#else
+/*
+ * non-iASL case - no redirection, nothing to do
+ */
+#define ACPI_MSG_REDIRECT_BEGIN
+#define ACPI_MSG_REDIRECT_END
+#endif
+
+/*
+ * Common error message prefixes
+ */
+#define ACPI_MSG_ERROR "ACPI Error: "
+#define ACPI_MSG_EXCEPTION "ACPI Exception: "
+#define ACPI_MSG_WARNING "ACPI Warning: "
+#define ACPI_MSG_INFO "ACPI: "
+
+#define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): "
+#define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): "
+
+/*
+ * Common message suffix
+ */
+#define ACPI_MSG_SUFFIX \
+ AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
+
+
/* Types for Resource descriptor entries */
#define ACPI_INVALID_RESOURCE 0
@@ -868,7 +911,7 @@ UtConvertBackslashes (
BOOLEAN
AcpiUtValidAcpiName (
- UINT32 Name);
+ char *Name);
BOOLEAN
AcpiUtValidAcpiChar (
diff --git a/sys/contrib/dev/acpica/include/platform/acenv.h b/sys/contrib/dev/acpica/include/platform/acenv.h
index dea4db2..6866de2 100644
--- a/sys/contrib/dev/acpica/include/platform/acenv.h
+++ b/sys/contrib/dev/acpica/include/platform/acenv.h
@@ -97,10 +97,11 @@
#endif
/*
- * AcpiBin/AcpiHelp/AcpiSrc configuration. All single threaded, with
- * no debug output.
+ * AcpiBin/AcpiDump/AcpiSrc/AcpiXtract configuration. All single
+ * threaded, with no debug output.
*/
#if (defined ACPI_BIN_APP) || \
+ (defined ACPI_DUMP_APP) || \
(defined ACPI_SRC_APP) || \
(defined ACPI_XTRACT_APP)
#define ACPI_APPLICATION
@@ -147,6 +148,9 @@
#if defined(_LINUX) || defined(__linux__)
#include "aclinux.h"
+#elif defined(_APPLE) || defined(__APPLE__)
+#include "acmacosx.h"
+
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
#include <contrib/dev/acpica/include/platform/acfreebsd.h>
diff --git a/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c b/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c
index c18d65c..19637a0 100644
--- a/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c
+++ b/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c
@@ -45,8 +45,6 @@
/*
* These interfaces are required in order to compile the ASL compiler and the
* various ACPICA tools under Linux or other Unix-like system.
- *
- * Note: Use #define __APPLE__ for OS X generation.
*/
#include <contrib/dev/acpica/include/acpi.h>
#include <contrib/dev/acpica/include/accommon.h>
@@ -88,12 +86,6 @@ typedef void* (*PTHREAD_CALLBACK) (void *);
#define ACPI_VPRINTF_BUFFER_SIZE 512
-/* Apple-specific */
-
-#ifdef __APPLE__
-#define sem_destroy sem_close
-#endif
-
/******************************************************************************
*
@@ -1086,18 +1078,22 @@ AcpiOsReadPort (
switch (Width)
{
case 8:
+
*Value = 0xFF;
break;
case 16:
+
*Value = 0xFFFF;
break;
case 32:
+
*Value = 0xFFFFFFFF;
break;
default:
+
return (AE_BAD_PARAMETER);
}
@@ -1158,10 +1154,12 @@ AcpiOsReadMemory (
case 16:
case 32:
case 64:
+
*Value = 0;
break;
default:
+
return (AE_BAD_PARAMETER);
}
return (AE_OK);
@@ -1261,12 +1259,15 @@ AcpiOsSignal (
switch (Function)
{
case ACPI_SIGNAL_FATAL:
+
break;
case ACPI_SIGNAL_BREAKPOINT:
+
break;
default:
+
break;
}
OpenPOWER on IntegriCloud