summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/Makefile571
-rw-r--r--compiler/aslcompile.c2
-rw-r--r--compiler/aslcompiler.h11
-rw-r--r--compiler/asldefine.h20
-rw-r--r--compiler/aslfiles.c6
-rw-r--r--compiler/aslglobal.h1
-rw-r--r--compiler/asllisting.c10
-rw-r--r--compiler/aslload.c16
-rw-r--r--compiler/asllookup.c109
-rw-r--r--compiler/aslmain.c98
-rw-r--r--compiler/aslmessages.h155
-rw-r--r--compiler/asloperands.c8
-rw-r--r--compiler/aslpredef.c1
-rw-r--r--compiler/aslresource.c43
-rw-r--r--compiler/aslrestype1.c20
-rw-r--r--compiler/aslrestype1i.c18
-rw-r--r--compiler/aslrestype2.c4
-rw-r--r--compiler/aslrestype2d.c42
-rw-r--r--compiler/aslrestype2e.c48
-rw-r--r--compiler/aslrestype2q.c40
-rw-r--r--compiler/aslrestype2w.c34
-rw-r--r--compiler/asltree.c3
-rw-r--r--compiler/asltypes.h8
-rw-r--r--compiler/aslutils.c63
-rw-r--r--compiler/dtcompile.c2
25 files changed, 536 insertions, 797 deletions
diff --git a/compiler/Makefile b/compiler/Makefile
index 1807635a2a40..e08941a19aed 100644
--- a/compiler/Makefile
+++ b/compiler/Makefile
@@ -19,50 +19,57 @@ PROG = iasl
HOST = _LINUX
NOMAN = YES
-COMPILE = $(CC) -c $(CFLAGS) $(CWARNINGFLAGS) -o$@ $?
+COMPILE = $(CC) -c $(CFLAGS) $(CWARNINGFLAGS) -o$@ $<
ACPICA_COMPONENTS =
-ACPICA_SRC = ..
-ACPICA_COMMON = $(ACPICA_SRC)/common
-ACPICA_CORE = $(ACPICA_SRC)$(ACPICA_COMPONENTS)
-ACPICA_TOOLS = $(ACPICA_SRC)/tools
-ACPICA_OSL = $(ACPICA_SRC)/os_specific/service_layers
-ASL_COMPILER = $(ACPICA_SRC)/compiler
-INSTALLDIR = /usr/bin
-INSTALLPROG = cp --remove-destination $(PROG) $(INSTALLDIR)
-
-CFLAGS+= \
- -D$(HOST) \
- -D_GNU_SOURCE \
- -DACPI_ASL_COMPILER \
- -I$(ACPICA_SRC)/include \
- -I$(ASL_COMPILER)
-
-CWARNINGFLAGS = \
- -ansi \
- -Wall \
- -Wbad-function-cast \
- -Wdeclaration-after-statement \
- -Werror \
- -Wformat=2 \
- -Wmissing-declarations \
- -Wmissing-prototypes \
- -Wstrict-aliasing=0 \
- -Wstrict-prototypes \
- -Wswitch-default \
- -Wpointer-arith \
- -Wundef
+ACPICA_SRC = ..
+ACPICA_INCLUDE = $(ACPICA_SRC)/include
+ACPICA_COMMON = $(ACPICA_SRC)/common
+ACPICA_CORE = $(ACPICA_SRC)$(ACPICA_COMPONENTS)
+ACPICA_TOOLS = $(ACPICA_SRC)/tools
+ACPICA_OSL = $(ACPICA_SRC)/os_specific/service_layers
+ACPICA_DEBUGGER = $(ACPICA_CORE)/debugger
+ACPICA_DISASSEMBLER = $(ACPICA_CORE)/disassembler
+ACPICA_DISPATCHER = $(ACPICA_CORE)/dispatcher
+ACPICA_EXECUTER = $(ACPICA_CORE)/executer
+ACPICA_NAMESPACE = $(ACPICA_CORE)/namespace
+ACPICA_PARSER = $(ACPICA_CORE)/parser
+ACPICA_TABLES = $(ACPICA_CORE)/tables
+ACPICA_UTILITIES = $(ACPICA_CORE)/utilities
+ASL_COMPILER = $(ACPICA_SRC)/compiler
+INSTALLDIR = /usr/bin
+INSTALLPROG = cp --remove-destination $(PROG) $(INSTALLDIR)
+
+ACPICA_HEADERS = \
+ $(wildcard $(ACPICA_INCLUDE)/*.h) \
+ $(wildcard $(ACPICA_INCLUDE)/platform/*.h)
#
-# Bison/Flex configuration
+# Search paths for source files
#
-YACC= bison
-YFLAGS+= -v -d -y
-
-LEX= flex
-LFLAGS+= -i -s
-
-OBJS = \
+vpath %.c \
+ $(ASL_COMPILER) \
+ $(ACPICA_DEBUGGER) \
+ $(ACPICA_DISASSEMBLER) \
+ $(ACPICA_DISPATCHER) \
+ $(ACPICA_EXECUTER) \
+ $(ACPICA_NAMESPACE) \
+ $(ACPICA_PARSER) \
+ $(ACPICA_TABLES) \
+ $(ACPICA_UTILITIES) \
+ $(ACPICA_COMMON) \
+ $(ACPICA_OSL)
+
+HEADERS = \
+ $(wildcard $(ASL_COMPILER)/*.h) \
+ aslcompiler.y.h \
+ dtparser.y.h
+
+OBJECTS = \
+ aslcompilerlex.o \
+ aslcompilerparse.o \
+ dtparserlex.o \
+ dtparserparse.o \
adfile.o \
adisasm.o \
adwalk.o \
@@ -70,8 +77,6 @@ OBJS = \
aslbtypes.o \
aslcodegen.o \
aslcompile.o \
- aslcompilerlex.o \
- aslcompilerparse.o \
aslerror.o \
aslfiles.o \
aslfold.o \
@@ -104,8 +109,6 @@ OBJS = \
dtexpress.o \
dtfield.o \
dtio.o \
- dtparserlex.o \
- dtparserparse.o \
dtsubtable.o \
dttable.o \
dttemplate.o \
@@ -205,18 +208,67 @@ INTERMEDIATES = \
dtparserparse.c
MISC = \
+ aslcompilerparse.h \
aslcompiler.y.h \
aslcompilerparse.output \
+ dtparserparse.h \
dtparser.y.h \
dtparserparse.output
+CFLAGS+= \
+ -D$(HOST) \
+ -D_GNU_SOURCE \
+ -DACPI_ASL_COMPILER \
+ -I$(ACPICA_INCLUDE) \
+ -I$(ASL_COMPILER)
+
+CWARNINGFLAGS = \
+ -ansi \
+ -Wall \
+ -Wbad-function-cast \
+ -Wdeclaration-after-statement \
+ -Werror \
+ -Wformat=2 \
+ -Wmissing-declarations \
+ -Wmissing-prototypes \
+ -Wstrict-aliasing=0 \
+ -Wstrict-prototypes \
+ -Wswitch-default \
+ -Wpointer-arith \
+ -Wundef
#
-# Root rule
+# gcc 4+ flags
#
-$(PROG) : $(INTERMEDIATES) $(OBJS)
- $(CC) $(OBJS) $(LDFLAGS) -o $(PROG)
+CWARNINGFLAGS += \
+ -Waddress \
+ -Waggregate-return \
+ -Wchar-subscripts \
+ -Wempty-body \
+ -Wlogical-op \
+ -Wmissing-declarations \
+ -Wmissing-field-initializers \
+ -Wmissing-parameter-type \
+ -Wnested-externs \
+ -Wold-style-declaration \
+ -Wold-style-definition \
+ -Wredundant-decls \
+ -Wtype-limits
+#
+# Bison/Flex configuration
+#
+YACC= bison
+YFLAGS+= -v -d -y
+
+LEX= flex
+LFLAGS+= -i -s
+
+#
+# Root rule
+#
+$(PROG) : $(INTERMEDIATES) $(MISC) $(OBJECTS)
+ $(CC) $(OBJECTS) $(LDFLAGS) -o $(PROG)
#
# Parser and Lexer - intermediate C files
@@ -224,16 +276,24 @@ $(PROG) : $(INTERMEDIATES) $(OBJS)
aslcompilerlex.c : $(ASL_COMPILER)/aslcompiler.l
${LEX} ${LFLAGS} -PAslCompiler -o$@ $?
-aslcompilerparse.c : $(ASL_COMPILER)/aslcompiler.y
+aslcompilerparse.c aslcompilerparse.h : $(ASL_COMPILER)/aslcompiler.y
${YACC} ${YFLAGS} -pAslCompiler -o$@ $?
- @mv -f aslcompilerparse.h aslcompiler.y.h
dtparserlex.c : $(ASL_COMPILER)/dtparser.l
${LEX} ${LFLAGS} -PDtParser -o$@ $?
-dtparserparse.c : $(ASL_COMPILER)/dtparser.y
+dtparserparse.c dtparserparse.h : $(ASL_COMPILER)/dtparser.y
${YACC} ${YFLAGS} -pDtParser -o$@ $?
- @mv -f dtparserparse.h dtparser.y.h
+
+# Rename headers produced by bison/yacc
+
+dtparser.y.h: dtparserparse.h
+ @echo Copy intermediate file:
+ @cp -f -v dtparserparse.h dtparser.y.h
+
+aslcompiler.y.h : aslcompilerparse.h
+ @echo Copy intermediate file:
+ @cp -f -v aslcompilerparse.h aslcompiler.y.h
#
@@ -255,418 +315,11 @@ dtparserparse.o : dtparserparse.c
$(CC) -c $(CFLAGS) -Wall -Werror -Wstrict-aliasing=0 -o$@ $?
-#
-# Compiler source
-#
-aslanalyze.o : $(ASL_COMPILER)/aslanalyze.c
- $(COMPILE)
-
-aslbtypes.o : $(ASL_COMPILER)/aslbtypes.c
- $(COMPILE)
-
-aslcodegen.o : $(ASL_COMPILER)/aslcodegen.c
- $(COMPILE)
-
-aslcompile.o : $(ASL_COMPILER)/aslcompile.c
- $(COMPILE)
-
-aslerror.o : $(ASL_COMPILER)/aslerror.c
- $(COMPILE)
-
-aslfiles.o : $(ASL_COMPILER)/aslfiles.c
- $(COMPILE)
-
-aslfold.o : $(ASL_COMPILER)/aslfold.c
- $(COMPILE)
-
-asllength.o : $(ASL_COMPILER)/asllength.c
- $(COMPILE)
-
-asllisting.o : $(ASL_COMPILER)/asllisting.c
- $(COMPILE)
-
-aslload.o : $(ASL_COMPILER)/aslload.c
- $(COMPILE)
-
-asllookup.o : $(ASL_COMPILER)/asllookup.c
- $(COMPILE)
-
-aslmain.o : $(ASL_COMPILER)/aslmain.c
- $(COMPILE)
-
-aslmap.o : $(ASL_COMPILER)/aslmap.c
- $(COMPILE)
-
-aslopcodes.o : $(ASL_COMPILER)/aslopcodes.c
- $(COMPILE)
-
-asloperands.o : $(ASL_COMPILER)/asloperands.c
- $(COMPILE)
-
-aslopt.o : $(ASL_COMPILER)/aslopt.c
- $(COMPILE)
-
-aslpredef.o : $(ASL_COMPILER)/aslpredef.c
- $(COMPILE)
-
-aslresource.o : $(ASL_COMPILER)/aslresource.c
- $(COMPILE)
-
-aslrestype1.o : $(ASL_COMPILER)/aslrestype1.c
- $(COMPILE)
-
-aslrestype1i.o : $(ASL_COMPILER)/aslrestype1i.c
- $(COMPILE)
-
-aslrestype2.o : $(ASL_COMPILER)/aslrestype2.c
- $(COMPILE)
-
-aslrestype2d.o : $(ASL_COMPILER)/aslrestype2d.c
- $(COMPILE)
-
-aslrestype2e.o : $(ASL_COMPILER)/aslrestype2e.c
- $(COMPILE)
-
-aslrestype2q.o : $(ASL_COMPILER)/aslrestype2q.c
- $(COMPILE)
-
-aslrestype2w.o : $(ASL_COMPILER)/aslrestype2w.c
- $(COMPILE)
-
-aslstartup.o : $(ASL_COMPILER)/aslstartup.c
- $(COMPILE)
-
-aslstubs.o : $(ASL_COMPILER)/aslstubs.c
- $(COMPILE)
-
-asltransform.o : $(ASL_COMPILER)/asltransform.c
- $(COMPILE)
-
-asltree.o : $(ASL_COMPILER)/asltree.c
- $(COMPILE)
-
-aslutils.o : $(ASL_COMPILER)/aslutils.c
- $(COMPILE)
-
-asluuid.o : $(ASL_COMPILER)/asluuid.c
- $(COMPILE)
-
-aslwalks.o : $(ASL_COMPILER)/aslwalks.c
- $(COMPILE)
-
-
-#
-# Data Table Compiler
-#
-dtcompile.o : $(ASL_COMPILER)/dtcompile.c
- $(COMPILE)
-
-dtexpress.o : $(ASL_COMPILER)/dtexpress.c
- $(COMPILE)
-
-dtfield.o : $(ASL_COMPILER)/dtfield.c
- $(COMPILE)
-
-dtio.o : $(ASL_COMPILER)/dtio.c
- $(COMPILE)
-
-dtsubtable.o : $(ASL_COMPILER)/dtsubtable.c
- $(COMPILE)
-
-dttable.o : $(ASL_COMPILER)/dttable.c
- $(COMPILE)
-
-dttemplate.o : $(ASL_COMPILER)/dttemplate.c
- $(COMPILE)
-
-dtutils.o : $(ASL_COMPILER)/dtutils.c
- $(COMPILE)
-
-
-#
-# ACPICA core source - common
-#
-adfile.o : $(ACPICA_COMMON)/adfile.c
- $(COMPILE)
-
-adisasm.o : $(ACPICA_COMMON)/adisasm.c
- $(COMPILE)
-
-adwalk.o : $(ACPICA_COMMON)/adwalk.c
- $(COMPILE)
-
-dmextern.o : $(ACPICA_COMMON)/dmextern.c
- $(COMPILE)
-
-dmrestag.o : $(ACPICA_COMMON)/dmrestag.c
- $(COMPILE)
-
-dmtable.o : $(ACPICA_COMMON)/dmtable.c
- $(COMPILE)
-
-dmtbdump.o : $(ACPICA_COMMON)/dmtbdump.c
- $(COMPILE)
-
-dmtbinfo.o : $(ACPICA_COMMON)/dmtbinfo.c
- $(COMPILE)
-
-getopt.o : $(ACPICA_COMMON)/getopt.c
- $(COMPILE)
-
-
-#
-# ACPICA core source
-#
-dbfileio.o : $(ACPICA_CORE)/debugger/dbfileio.c
- $(COMPILE)
-
-dmbuffer.o : $(ACPICA_CORE)/disassembler/dmbuffer.c
- $(COMPILE)
-
-dmnames.o : $(ACPICA_CORE)/disassembler/dmnames.c
- $(COMPILE)
-
-dmobject.o : $(ACPICA_CORE)/disassembler/dmobject.c
- $(COMPILE)
-
-dmopcode.o : $(ACPICA_CORE)/disassembler/dmopcode.c
- $(COMPILE)
-
-dmresrc.o : $(ACPICA_CORE)/disassembler/dmresrc.c
- $(COMPILE)
-
-dmresrcl.o : $(ACPICA_CORE)/disassembler/dmresrcl.c
- $(COMPILE)
-
-dmresrcs.o : $(ACPICA_CORE)/disassembler/dmresrcs.c
- $(COMPILE)
-
-dmutils.o : $(ACPICA_CORE)/disassembler/dmutils.c
- $(COMPILE)
-
-dmwalk.o : $(ACPICA_CORE)/disassembler/dmwalk.c
- $(COMPILE)
-
-dsargs.o : $(ACPICA_CORE)/dispatcher/dsargs.c
- $(COMPILE)
-
-dscontrol.o : $(ACPICA_CORE)/dispatcher/dscontrol.c
- $(COMPILE)
-
-dsfield.o : $(ACPICA_CORE)/dispatcher/dsfield.c
- $(COMPILE)
-
-dsobject.o : $(ACPICA_CORE)/dispatcher/dsobject.c
- $(COMPILE)
-
-dsopcode.o : $(ACPICA_CORE)/dispatcher/dsopcode.c
- $(COMPILE)
-
-dsutils.o : $(ACPICA_CORE)/dispatcher/dsutils.c
- $(COMPILE)
-
-dswexec.o : $(ACPICA_CORE)/dispatcher/dswexec.c
- $(COMPILE)
-
-dswload.o : $(ACPICA_CORE)/dispatcher/dswload.c
- $(COMPILE)
-
-dswload2.o : $(ACPICA_CORE)/dispatcher/dswload2.c
- $(COMPILE)
-
-dswscope.o : $(ACPICA_CORE)/dispatcher/dswscope.c
- $(COMPILE)
-
-dswstate.o : $(ACPICA_CORE)/dispatcher/dswstate.c
- $(COMPILE)
-
-exconvrt.o : $(ACPICA_CORE)/executer/exconvrt.c
- $(COMPILE)
-
-excreate.o : $(ACPICA_CORE)/executer/excreate.c
- $(COMPILE)
-
-exdump.o : $(ACPICA_CORE)/executer/exdump.c
- $(COMPILE)
-
-exmisc.o : $(ACPICA_CORE)/executer/exmisc.c
- $(COMPILE)
-
-exmutex.o : $(ACPICA_CORE)/executer/exmutex.c
- $(COMPILE)
-
-exnames.o : $(ACPICA_CORE)/executer/exnames.c
- $(COMPILE)
-
-exoparg1.o : $(ACPICA_CORE)/executer/exoparg1.c
- $(COMPILE)
-
-exoparg2.o : $(ACPICA_CORE)/executer/exoparg2.c
- $(COMPILE)
-
-exoparg3.o : $(ACPICA_CORE)/executer/exoparg3.c
- $(COMPILE)
-
-exoparg6.o : $(ACPICA_CORE)/executer/exoparg6.c
- $(COMPILE)
-
-exprep.o : $(ACPICA_CORE)/executer/exprep.c
- $(COMPILE)
-
-exregion.o : $(ACPICA_CORE)/executer/exregion.c
- $(COMPILE)
-
-exresnte.o : $(ACPICA_CORE)/executer/exresnte.c
- $(COMPILE)
-
-exresolv.o : $(ACPICA_CORE)/executer/exresolv.c
- $(COMPILE)
-
-exresop.o : $(ACPICA_CORE)/executer/exresop.c
- $(COMPILE)
-
-exstore.o : $(ACPICA_CORE)/executer/exstore.c
- $(COMPILE)
-
-exstoren.o : $(ACPICA_CORE)/executer/exstoren.c
- $(COMPILE)
-
-exstorob.o : $(ACPICA_CORE)/executer/exstorob.c
- $(COMPILE)
-
-exsystem.o : $(ACPICA_CORE)/executer/exsystem.c
+%.o : %.c $(HEADERS) $(ACPICA_HEADERS)
$(COMPILE)
-exutils.o : $(ACPICA_CORE)/executer/exutils.c
- $(COMPILE)
-
-nsaccess.o : $(ACPICA_CORE)/namespace/nsaccess.c
- $(COMPILE)
-
-nsalloc.o : $(ACPICA_CORE)/namespace/nsalloc.c
- $(COMPILE)
-
-nsdump.o : $(ACPICA_CORE)/namespace/nsdump.c
- $(COMPILE)
-
-nsnames.o : $(ACPICA_CORE)/namespace/nsnames.c
- $(COMPILE)
-
-nsobject.o : $(ACPICA_CORE)/namespace/nsobject.c
- $(COMPILE)
-
-nsparse.o : $(ACPICA_CORE)/namespace/nsparse.c
- $(COMPILE)
-
-nssearch.o : $(ACPICA_CORE)/namespace/nssearch.c
- $(COMPILE)
-
-nsutils.o : $(ACPICA_CORE)/namespace/nsutils.c
- $(COMPILE)
-
-nswalk.o : $(ACPICA_CORE)/namespace/nswalk.c
- $(COMPILE)
-
-nsxfobj.o : $(ACPICA_CORE)/namespace/nsxfobj.c
- $(COMPILE)
-
-psargs.o : $(ACPICA_CORE)/parser/psargs.c
- $(COMPILE)
-
-psloop.o : $(ACPICA_CORE)/parser/psloop.c
- $(COMPILE)
-
-psopcode.o : $(ACPICA_CORE)/parser/psopcode.c
- $(COMPILE)
-
-psparse.o : $(ACPICA_CORE)/parser/psparse.c
- $(COMPILE)
-
-psscope.o : $(ACPICA_CORE)/parser/psscope.c
- $(COMPILE)
-
-pstree.o : $(ACPICA_CORE)/parser/pstree.c
- $(COMPILE)
-
-psutils.o : $(ACPICA_CORE)/parser/psutils.c
- $(COMPILE)
-
-pswalk.o : $(ACPICA_CORE)/parser/pswalk.c
- $(COMPILE)
-
-tbfadt.o : $(ACPICA_CORE)/tables/tbfadt.c
- $(COMPILE)
-
-tbinstal.o : $(ACPICA_CORE)/tables/tbinstal.c
- $(COMPILE)
-
-tbutils.o : $(ACPICA_CORE)/tables/tbutils.c
- $(COMPILE)
-
-tbxface.o : $(ACPICA_CORE)/tables/tbxface.c
- $(COMPILE)
-
-utalloc.o : $(ACPICA_CORE)/utilities/utalloc.c
- $(COMPILE)
-
-utcache.o : $(ACPICA_CORE)/utilities/utcache.c
- $(COMPILE)
-
-utcopy.o : $(ACPICA_CORE)/utilities/utcopy.c
- $(COMPILE)
-
-utdebug.o : $(ACPICA_CORE)/utilities/utdebug.c
- $(COMPILE)
-
-utdecode.o : $(ACPICA_CORE)/utilities/utdecode.c
- $(COMPILE)
-
-utdelete.o : $(ACPICA_CORE)/utilities/utdelete.c
- $(COMPILE)
-
-utglobal.o : $(ACPICA_CORE)/utilities/utglobal.c
- $(COMPILE)
-
-utinit.o : $(ACPICA_CORE)/utilities/utinit.c
- $(COMPILE)
-
-utlock.o : $(ACPICA_CORE)/utilities/utlock.c
- $(COMPILE)
-
-utmath.o : $(ACPICA_CORE)/utilities/utmath.c
- $(COMPILE)
-
-utmisc.o : $(ACPICA_CORE)/utilities/utmisc.c
- $(COMPILE)
-
-utmutex.o : $(ACPICA_CORE)/utilities/utmutex.c
- $(COMPILE)
-
-utobject.o : $(ACPICA_CORE)/utilities/utobject.c
- $(COMPILE)
-
-utresrc.o : $(ACPICA_CORE)/utilities/utresrc.c
- $(COMPILE)
-
-utstate.o : $(ACPICA_CORE)/utilities/utstate.c
- $(COMPILE)
-
-utxferror.o : $(ACPICA_CORE)/utilities/utxferror.c
- $(COMPILE)
-
-utxface.o : $(ACPICA_CORE)/utilities/utxface.c
- $(COMPILE)
-
-
-#
-# Unix OS services layer (OSL)
-#
-osunixxf.o : $(ACPICA_OSL)/osunixxf.c
- $(COMPILE)
-
-
clean :
- rm -f $(PROG) $(PROG).exe $(OBJS) $(INTERMEDIATES) $(MISC)
+ rm -f $(PROG) $(PROG).exe $(OBJECTS) $(INTERMEDIATES) $(MISC)
install :
$(INSTALLPROG)
diff --git a/compiler/aslcompile.c b/compiler/aslcompile.c
index ec1b59783cbd..bd22dd2105a0 100644
--- a/compiler/aslcompile.c
+++ b/compiler/aslcompile.c
@@ -472,6 +472,8 @@ CmDoCompile (
if (!RootNode)
{
+ AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL,
+ NULL, "- Could not resolve parse tree root node");
CmCleanupAndExit ();
return -1;
}
diff --git a/compiler/aslcompiler.h b/compiler/aslcompiler.h
index 2a397b3fe1e3..3f2dd4a64cd1 100644
--- a/compiler/aslcompiler.h
+++ b/compiler/aslcompiler.h
@@ -829,17 +829,12 @@ RsAllocateResourceNode (
UINT32 Size);
void
-RsCreateBitField (
+RsCreateResourceField (
ACPI_PARSE_OBJECT *Op,
char *Name,
UINT32 ByteOffset,
- UINT32 BitOffset);
-
-void
-RsCreateByteField (
- ACPI_PARSE_OBJECT *Op,
- char *Name,
- UINT32 ByteOffset);
+ UINT32 BitOffset,
+ UINT32 BitLength);
void
RsSetFlagBits (
diff --git a/compiler/asldefine.h b/compiler/asldefine.h
index 04e3b6056b1f..4fae94b618cc 100644
--- a/compiler/asldefine.h
+++ b/compiler/asldefine.h
@@ -153,5 +153,25 @@
#define POSITIVE 0
+/* Helper macros for resource tag creation */
+
+#define RsCreateMultiBitField \
+ RsCreateResourceField
+
+#define RsCreateBitField(Op, Name, ByteOffset, BitOffset) \
+ RsCreateResourceField (Op, Name, ByteOffset, BitOffset, 1)
+
+#define RsCreateByteField(Op, Name, ByteOffset) \
+ RsCreateResourceField (Op, Name, ByteOffset, 0, 8);
+
+#define RsCreateWordField(Op, Name, ByteOffset) \
+ RsCreateResourceField (Op, Name, ByteOffset, 0, 16);
+
+#define RsCreateDwordField(Op, Name, ByteOffset) \
+ RsCreateResourceField (Op, Name, ByteOffset, 0, 32);
+
+#define RsCreateQwordField(Op, Name, ByteOffset) \
+ RsCreateResourceField (Op, Name, ByteOffset, 0, 64);
+
#endif /* ASLDEFINE.H */
diff --git a/compiler/aslfiles.c b/compiler/aslfiles.c
index 81bd823171c3..95e22302f060 100644
--- a/compiler/aslfiles.c
+++ b/compiler/aslfiles.c
@@ -174,14 +174,18 @@ FlGetFileSize (
{
FILE *fp;
UINT32 FileSize;
+ long Offset;
fp = Gbl_Files[FileId].Handle;
+ Offset = ftell (fp);
fseek (fp, 0, SEEK_END);
FileSize = (UINT32) ftell (fp);
- fseek (fp, 0, SEEK_SET);
+ /* Restore file pointer */
+
+ fseek (fp, Offset, SEEK_SET);
return (FileSize);
}
diff --git a/compiler/aslglobal.h b/compiler/aslglobal.h
index f80c89f362c7..dd1dd49dd590 100644
--- a/compiler/aslglobal.h
+++ b/compiler/aslglobal.h
@@ -128,6 +128,7 @@ ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_WarningLevel, ASL_WARNI
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseOriginalCompilerId, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE);
ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE);
+ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileGeneric, FALSE);
#define HEX_OUTPUT_NONE 0
diff --git a/compiler/asllisting.c b/compiler/asllisting.c
index 7b797d5b70d0..7f2a83f54256 100644
--- a/compiler/asllisting.c
+++ b/compiler/asllisting.c
@@ -850,9 +850,9 @@ LsFinishSourceListing (
FlPrintFile (FileId, "\n\nSummary of errors and warnings\n\n");
AePrintErrorLog (FileId);
- FlPrintFile (FileId, "\n\n");
+ FlPrintFile (FileId, "\n");
UtDisplaySummary (FileId);
- FlPrintFile (FileId, "\n\n");
+ FlPrintFile (FileId, "\n");
}
}
@@ -1309,6 +1309,7 @@ LsDoHexOutputC (
/* Get AML size, seek back to start */
AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
+ FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n");
FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
@@ -1365,7 +1366,6 @@ LsDoHexOutputC (
}
FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n");
- FlCloseFile (ASL_FILE_HEX_OUTPUT);
}
@@ -1397,6 +1397,7 @@ LsDoHexOutputAsl (
/* Get AML size, seek back to start */
AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
+ FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
FlPrintFile (ASL_FILE_HEX_OUTPUT, " * ASL source code output\n");
FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n",
@@ -1453,7 +1454,6 @@ LsDoHexOutputAsl (
}
FlPrintFile (ASL_FILE_HEX_OUTPUT, " })\n");
- FlCloseFile (ASL_FILE_HEX_OUTPUT);
}
@@ -1485,6 +1485,7 @@ LsDoHexOutputAsm (
/* Get AML size, seek back to start */
AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT);
+ FlSeekFile (ASL_FILE_AML_OUTPUT, 0);
FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n");
FlPrintFile (ASL_FILE_HEX_OUTPUT, "; AML code block contains 0x%X bytes\n;\n",
@@ -1536,7 +1537,6 @@ LsDoHexOutputAsm (
}
FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n");
- FlCloseFile (ASL_FILE_HEX_OUTPUT);
}
diff --git a/compiler/aslload.c b/compiler/aslload.c
index 6eb1c5604dda..ed5a0a3b8be2 100644
--- a/compiler/aslload.c
+++ b/compiler/aslload.c
@@ -290,7 +290,6 @@ LdLoadResourceElements (
InitializerOp = ASL_GET_CHILD_NODE (Op);
while (InitializerOp)
{
-
if (InitializerOp->Asl.ExternalName)
{
Status = AcpiNsLookup (WalkState->ScopeInfo,
@@ -305,20 +304,15 @@ LdLoadResourceElements (
}
/*
- * Store the field offset in the namespace node so it
- * can be used when the field is referenced
+ * Store the field offset and length in the namespace node
+ * so it can be used when the field is referenced
*/
- Node->Value = (UINT32) InitializerOp->Asl.Value.Integer;
+ Node->Value = InitializerOp->Asl.Value.Tag.BitOffset;
+ Node->Length = InitializerOp->Asl.Value.Tag.BitLength;
InitializerOp->Asl.Node = Node;
Node->Op = InitializerOp;
-
- /* Pass thru the field type (Bitfield or Bytefield) */
-
- if (InitializerOp->Asl.CompileFlags & NODE_IS_BIT_OFFSET)
- {
- Node->Flags |= ANOBJ_IS_BIT_OFFSET;
- }
}
+
InitializerOp = ASL_GET_PEER_NODE (InitializerOp);
}
diff --git a/compiler/asllookup.c b/compiler/asllookup.c
index dec2396030c0..bbe00cb83e51 100644
--- a/compiler/asllookup.c
+++ b/compiler/asllookup.c
@@ -822,7 +822,10 @@ LkNamespaceLocateBegin (
ACPI_PARSE_OBJECT *OwningOp;
ACPI_PARSE_OBJECT *SpaceIdOp;
UINT32 MinimumLength;
- UINT32 Temp;
+ UINT32 Offset;
+ UINT32 FieldBitLength;
+ UINT32 TagBitLength;
+ UINT8 Message = 0;
const ACPI_OPCODE_INFO *OpInfo;
UINT32 Flags;
@@ -1026,74 +1029,106 @@ LkNamespaceLocateBegin (
/* 2) Check for a reference to a resource descriptor */
if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) ||
- (Node->Type == ACPI_TYPE_LOCAL_RESOURCE))
+ (Node->Type == ACPI_TYPE_LOCAL_RESOURCE))
{
/*
- * This was a reference to a field within a resource descriptor. Extract
- * the associated field offset (either a bit or byte offset depending on
- * the field type) and change the named reference into an integer for
- * AML code generation
+ * This was a reference to a field within a resource descriptor.
+ * Extract the associated field offset (either a bit or byte
+ * offset depending on the field type) and change the named
+ * reference into an integer for AML code generation
*/
- Temp = Node->Value;
- if (Node->Flags & ANOBJ_IS_BIT_OFFSET)
- {
- Op->Asl.CompileFlags |= NODE_IS_BIT_OFFSET;
- }
-
- /* Perform BitOffset <--> ByteOffset conversion if necessary */
+ Offset = Node->Value;
+ TagBitLength = Node->Length;
+ /*
+ * If a field is being created, generate the length (in bits) of
+ * the field. Note: Opcodes other than CreateXxxField and Index
+ * can come through here. For other opcodes, we just need to
+ * convert the resource tag reference to an integer offset.
+ */
switch (Op->Asl.Parent->Asl.AmlOpcode)
{
- case AML_CREATE_FIELD_OP:
+ case AML_CREATE_FIELD_OP: /* Variable "Length" field, in bits */
+ /*
+ * We know the length operand is an integer constant because
+ * we know that it contains a reference to a resource
+ * descriptor tag.
+ */
+ FieldBitLength = (UINT32) Op->Asl.Next->Asl.Value.Integer;
+ break;
- /* We allow a Byte offset to Bit Offset conversion for this op */
+ case AML_CREATE_BIT_FIELD_OP:
+ FieldBitLength = 1;
+ break;
- if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET))
- {
- /* Simply multiply byte offset times 8 to get bit offset */
+ case AML_CREATE_BYTE_FIELD_OP:
+ case AML_INDEX_OP:
+ FieldBitLength = 8;
+ break;
- Temp = ACPI_MUL_8 (Temp);
- }
+ case AML_CREATE_WORD_FIELD_OP:
+ FieldBitLength = 16;
break;
+ case AML_CREATE_DWORD_FIELD_OP:
+ FieldBitLength = 32;
+ break;
- case AML_CREATE_BIT_FIELD_OP:
+ case AML_CREATE_QWORD_FIELD_OP:
+ FieldBitLength = 64;
+ break;
+
+ default:
+ FieldBitLength = 0;
+ break;
+ }
- /* This op requires a Bit Offset */
+ /* Check the field length against the length of the resource tag */
- if (!(Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET))
+ if (FieldBitLength)
+ {
+ if (TagBitLength < FieldBitLength)
{
- AslError (ASL_ERROR, ASL_MSG_BYTES_TO_BITS, Op, NULL);
+ Message = ASL_MSG_TAG_SMALLER;
}
- break;
+ else if (TagBitLength > FieldBitLength)
+ {
+ Message = ASL_MSG_TAG_LARGER;
+ }
+
+ if (Message)
+ {
+ sprintf (MsgBuffer, "Tag: %u bit%s, Field: %u bit%s",
+ TagBitLength, (TagBitLength > 1) ? "s" : "",
+ FieldBitLength, (FieldBitLength > 1) ? "s" : "");
+ AslError (ASL_WARNING, Message, Op, MsgBuffer);
+ }
+ }
+ /* Convert the BitOffset to a ByteOffset for certain opcodes */
+
+ switch (Op->Asl.Parent->Asl.AmlOpcode)
+ {
case AML_CREATE_BYTE_FIELD_OP:
case AML_CREATE_WORD_FIELD_OP:
case AML_CREATE_DWORD_FIELD_OP:
case AML_CREATE_QWORD_FIELD_OP:
case AML_INDEX_OP:
- /* These Ops require Byte offsets */
-
- if (Op->Asl.CompileFlags & NODE_IS_BIT_OFFSET)
- {
- AslError (ASL_ERROR, ASL_MSG_BITS_TO_BYTES, Op, NULL);
- }
+ Offset = ACPI_DIV_8 (Offset);
break;
-
default:
- /* Nothing to do for other opcodes */
break;
}
/* Now convert this node to an integer whose value is the field offset */
- Op->Asl.AmlLength = 0;
- Op->Asl.ParseOpcode = PARSEOP_INTEGER;
- Op->Asl.Value.Integer = (UINT64) Temp;
- Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
+ Op->Asl.AmlLength = 0;
+ Op->Asl.ParseOpcode = PARSEOP_INTEGER;
+ Op->Asl.Value.Integer = (UINT64) Offset;
+ Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
OpcGenerateAmlOpcode (Op);
}
diff --git a/compiler/aslmain.c b/compiler/aslmain.c
index d2aef19c33f6..d29c24c6f791 100644
--- a/compiler/aslmain.c
+++ b/compiler/aslmain.c
@@ -96,7 +96,7 @@ AslDoResponseFile (
#define ASL_TOKEN_SEPARATORS " \t\n"
-#define ASL_SUPPORTED_OPTIONS "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:T:v:w:x:z"
+#define ASL_SUPPORTED_OPTIONS "@:2b:c:d^e:fgh^i^I:l^no:p:r:s:t:T:G^v:w:x:z"
/*******************************************************************************
@@ -116,55 +116,56 @@ Options (
void)
{
- printf ("Global:\n");
- printf (" -@<file> Specify command file\n");
- printf (" -I<dir> Specify additional include directory\n");
+ printf ("\nGlobal:\n");
+ ACPI_OPTION ("-@ <file>", "Specify command file");
+ ACPI_OPTION ("-I <dir>", "Specify additional include directory");
printf ("\nGeneral Output:\n");
- printf (" -p<prefix> Specify path/filename prefix for all output files\n");
- printf (" -va Disable all errors and warnings (summary only)\n");
- printf (" -vi Less verbose errors and warnings for use with IDEs\n");
- printf (" -vo Enable optimization comments\n");
- printf (" -vr Disable remarks\n");
- printf (" -vs Disable signon\n");
- printf (" -w<1|2|3> Set warning reporting level\n");
+ ACPI_OPTION ("-p <prefix>", "Specify path/filename prefix for all output files");
+ ACPI_OPTION ("-va", "Disable all errors and warnings (summary only)");
+ ACPI_OPTION ("-vi", "Less verbose errors and warnings for use with IDEs");
+ ACPI_OPTION ("-vo", "Enable optimization comments");
+ ACPI_OPTION ("-vr", "Disable remarks");
+ ACPI_OPTION ("-vs", "Disable signon");
+ ACPI_OPTION ("-w <1|2|3>", "Set warning reporting level");
printf ("\nAML Output Files:\n");
- printf (" -s<a|c> Create AML in assembler or C source file (*.asm or *.c)\n");
- printf (" -i<a|c> Create assembler or C include file (*.inc or *.h)\n");
- printf (" -t<a|c|s> Create AML in assembler, C, or ASL hex table (*.hex)\n");
+ ACPI_OPTION ("-s <a|c>", "Create AML in assembler or C source file (*.asm or *.c)");
+ ACPI_OPTION ("-i <a|c>", "Create assembler or C include file (*.inc or *.h)");
+ ACPI_OPTION ("-t <a|c|s>", "Create AML in assembler, C, or ASL hex table (*.hex)");
printf ("\nAML Code Generation:\n");
- printf (" -oa Disable all optimizations (compatibility mode)\n");
- printf (" -of Disable constant folding\n");
- printf (" -oi Disable integer optimization to Zero/One/Ones\n");
- printf (" -on Disable named reference string optimization\n");
- printf (" -cr Disable Resource Descriptor error checking\n");
- printf (" -r<Revision> Override table header Revision (1-255)\n");
+ ACPI_OPTION ("-oa", "Disable all optimizations (compatibility mode)");
+ ACPI_OPTION ("-of", "Disable constant folding");
+ ACPI_OPTION ("-oi", "Disable integer optimization to Zero/One/Ones");
+ ACPI_OPTION ("-on", "Disable named reference string optimization");
+ ACPI_OPTION ("-cr", "Disable Resource Descriptor error checking");
+ ACPI_OPTION ("-r <revision>", "Override table header Revision (1-255)");
printf ("\nASL Listing Files:\n");
- printf (" -l Create mixed listing file (ASL source and AML) (*.lst)\n");
- printf (" -ln Create namespace file (*.nsp)\n");
- printf (" -ls Create combined source file (expanded includes) (*.src)\n");
+ ACPI_OPTION ("-l", "Create mixed listing file (ASL source and AML) (*.lst)");
+ ACPI_OPTION ("-ln", "Create namespace file (*.nsp)");
+ ACPI_OPTION ("-ls", "Create combined source file (expanded includes) (*.src)");
printf ("\nACPI Data Tables:\n");
- printf (" -T <Sig>|ALL|* Create table template file(s) for <Sig>\n");
- printf (" -vt Create verbose templates (full disassembly)\n");
+ ACPI_OPTION ("-G", "Compile custom table containing generic operators");
+ ACPI_OPTION ("-T <sig>|ALL|*", "Create table template file(s) for <Sig>");
+ ACPI_OPTION ("-vt", "Create verbose templates (full disassembly)");
printf ("\nAML Disassembler:\n");
- printf (" -d [file] Disassemble or decode binary ACPI table to file (*.dsl)\n");
- printf (" -da [f1,f2] Disassemble multiple tables from single namespace\n");
- printf (" -dc [file] Disassemble AML and immediately compile it\n");
- printf (" (Obtain DSDT from current system if no input file)\n");
- printf (" -e [f1,f2] Include ACPI table(s) for external symbol resolution\n");
- printf (" -2 Emit ACPI 2.0 compatible ASL code\n");
- printf (" -g Get ACPI tables and write to files (*.dat)\n");
+ ACPI_OPTION ("-d [file]", "Disassemble or decode binary ACPI table to file (*.dsl)");
+ ACPI_OPTION ("-da [f1,f2]", "Disassemble multiple tables from single namespace");
+ ACPI_OPTION ("-dc [file]", "Disassemble AML and immediately compile it");
+ ACPI_OPTION ("", "(Obtain DSDT from current system if no input file)");
+ ACPI_OPTION ("-e [f1,f2]", "Include ACPI table(s) for external symbol resolution");
+ ACPI_OPTION ("-2", "Emit ACPI 2.0 compatible ASL code");
+ ACPI_OPTION ("-g", "Get ACPI tables and write to files (*.dat)");
printf ("\nHelp:\n");
- printf (" -h Additional help and compiler debug options\n");
- printf (" -hc Display operators allowed in constant expressions\n");
- printf (" -hr Display ACPI reserved method names\n");
- printf (" -ht Display currently supported ACPI table names\n");
+ ACPI_OPTION ("-h", "Additional help and compiler debug options");
+ ACPI_OPTION ("-hc", "Display operators allowed in constant expressions");
+ ACPI_OPTION ("-hr", "Display ACPI reserved method names");
+ ACPI_OPTION ("-ht", "Display currently supported ACPI table names");
}
@@ -185,7 +186,7 @@ HelpMessage (
void)
{
- printf ("AML output filename generation:\n");
+ printf ("\nAML output filename generation:\n");
printf (" Output filenames are generated by appending an extension to a common\n");
printf (" filename prefix. The filename prefix is obtained via one of the\n");
printf (" following methods (in priority order):\n");
@@ -197,13 +198,13 @@ HelpMessage (
Options ();
printf ("\nCompiler/Disassembler Debug Options:\n");
- printf (" -b<p|t|b> Create compiler debug/trace file (*.txt)\n");
- printf (" Types: Parse/Tree/Both\n");
- printf (" -f Ignore errors, force creation of AML output file(s)\n");
- printf (" -n Parse only, no output generation\n");
- printf (" -ot Display compile times\n");
- printf (" -x<level> Set debug level for trace output\n");
- printf (" -z Do not insert new compiler ID for DataTables\n");
+ ACPI_OPTION ("-b<p|t|b>", "Create compiler debug/trace file (*.txt)");
+ ACPI_OPTION ("", "Types: Parse/Tree/Both");
+ ACPI_OPTION ("-f", "Ignore errors, force creation of AML output file(s)");
+ ACPI_OPTION ("-n", "Parse only, no output generation");
+ ACPI_OPTION ("-ot", "Display compile times");
+ ACPI_OPTION ("-x<level>", "Set debug level for trace output");
+ ACPI_OPTION ("-z", "Do not insert new compiler ID for DataTables");
}
@@ -224,8 +225,8 @@ Usage (
void)
{
- printf ("%s\n", ASL_COMPLIANCE);
- printf ("Usage: %s [Options] [Files]\n\n", ASL_INVOCATION_NAME);
+ printf ("%s\n\n", ASL_COMPLIANCE);
+ ACPI_USAGE_HEADER ("iasl [Options] [Files]");
Options ();
}
@@ -720,6 +721,11 @@ AslDoOptions (
break;
+ case 'G':
+ Gbl_CompileGeneric = TRUE;
+ break;
+
+
case 'T':
Gbl_DoTemplates = TRUE;
Gbl_TemplateSignature = AcpiGbl_Optarg;
diff --git a/compiler/aslmessages.h b/compiler/aslmessages.h
index 269c0a4b3817..cc015be0bc92 100644
--- a/compiler/aslmessages.h
+++ b/compiler/aslmessages.h
@@ -61,17 +61,18 @@
typedef enum
{
ASL_MSG_RESERVED = 0,
+
+ ASL_MSG_ALIGNMENT,
ASL_MSG_ALPHANUMERIC_STRING,
ASL_MSG_AML_NOT_IMPLEMENTED,
ASL_MSG_ARG_COUNT_HI,
ASL_MSG_ARG_COUNT_LO,
ASL_MSG_ARG_INIT,
ASL_MSG_BACKWARDS_OFFSET,
- ASL_MSG_BITS_TO_BYTES,
ASL_MSG_BUFFER_LENGTH,
- ASL_MSG_BYTES_TO_BITS,
ASL_MSG_CLOSE,
ASL_MSG_COMPILER_INTERNAL,
+ ASL_MSG_COMPILER_RESERVED,
ASL_MSG_CONSTANT_EVALUATION,
ASL_MSG_CONSTANT_FOLDED,
ASL_MSG_CORE_EXCEPTION,
@@ -90,15 +91,24 @@ typedef enum
ASL_MSG_FIELD_ACCESS_WIDTH,
ASL_MSG_FIELD_UNIT_ACCESS_WIDTH,
ASL_MSG_FIELD_UNIT_OFFSET,
+ ASL_MSG_GPE_NAME_CONFLICT,
+ ASL_MSG_HID_LENGTH,
ASL_MSG_INCLUDE_FILE_OPEN,
ASL_MSG_INPUT_FILE_OPEN,
ASL_MSG_INTEGER_LENGTH,
ASL_MSG_INTEGER_OPTIMIZATION,
ASL_MSG_INTERRUPT_LIST,
ASL_MSG_INTERRUPT_NUMBER,
+ ASL_MSG_INVALID_ACCESS_SIZE,
+ ASL_MSG_INVALID_ADDR_FLAGS,
ASL_MSG_INVALID_CONSTANT_OP,
ASL_MSG_INVALID_EISAID,
ASL_MSG_INVALID_ESCAPE,
+ ASL_MSG_INVALID_GRAN_FIXED,
+ ASL_MSG_INVALID_GRANULARITY,
+ ASL_MSG_INVALID_LENGTH,
+ ASL_MSG_INVALID_LENGTH_FIXED,
+ ASL_MSG_INVALID_MIN_MAX,
ASL_MSG_INVALID_OPERAND,
ASL_MSG_INVALID_PERFORMANCE,
ASL_MSG_INVALID_PRIORITY,
@@ -107,28 +117,38 @@ typedef enum
ASL_MSG_INVALID_TIME,
ASL_MSG_INVALID_TYPE,
ASL_MSG_INVALID_UUID,
+ ASL_MSG_ISA_ADDRESS,
+ ASL_MSG_LEADING_ASTERISK,
ASL_MSG_LIST_LENGTH_LONG,
ASL_MSG_LIST_LENGTH_SHORT,
ASL_MSG_LISTING_FILE_OPEN,
ASL_MSG_LISTING_FILENAME,
ASL_MSG_LOCAL_INIT,
+ ASL_MSG_LOCAL_OUTSIDE_METHOD,
ASL_MSG_LONG_LINE,
ASL_MSG_MEMORY_ALLOCATION,
ASL_MSG_MISSING_ENDDEPENDENT,
ASL_MSG_MISSING_STARTDEPENDENT,
+ ASL_MSG_MULTIPLE_DEFAULT,
ASL_MSG_MULTIPLE_TYPES,
ASL_MSG_NAME_EXISTS,
ASL_MSG_NAME_OPTIMIZATION,
+ ASL_MSG_NAMED_OBJECT_IN_WHILE,
ASL_MSG_NESTED_COMMENT,
ASL_MSG_NO_CASES,
+ ASL_MSG_NO_REGION,
ASL_MSG_NO_RETVAL,
ASL_MSG_NO_WHILE,
ASL_MSG_NON_ASCII,
+ ASL_MSG_NON_ZERO,
ASL_MSG_NOT_EXIST,
ASL_MSG_NOT_FOUND,
ASL_MSG_NOT_METHOD,
ASL_MSG_NOT_PARAMETER,
ASL_MSG_NOT_REACHABLE,
+ ASL_MSG_NOT_REFERENCED,
+ ASL_MSG_NULL_DESCRIPTOR,
+ ASL_MSG_NULL_STRING,
ASL_MSG_OPEN,
ASL_MSG_OUTPUT_FILE_OPEN,
ASL_MSG_OUTPUT_FILENAME,
@@ -140,6 +160,7 @@ typedef enum
ASL_MSG_RESERVED_ARG_COUNT_HI,
ASL_MSG_RESERVED_ARG_COUNT_LO,
ASL_MSG_RESERVED_METHOD,
+ ASL_MSG_RESERVED_NO_RETURN_VAL,
ASL_MSG_RESERVED_OPERAND_TYPE,
ASL_MSG_RESERVED_RETURN_VALUE,
ASL_MSG_RESERVED_USE,
@@ -148,63 +169,45 @@ typedef enum
ASL_MSG_RESOURCE_INDEX,
ASL_MSG_RESOURCE_LIST,
ASL_MSG_RESOURCE_SOURCE,
+ ASL_MSG_RESULT_NOT_USED,
ASL_MSG_RETURN_TYPES,
ASL_MSG_SCOPE_FWD_REF,
ASL_MSG_SCOPE_TYPE,
ASL_MSG_SEEK,
+ ASL_MSG_SERIALIZED,
ASL_MSG_SINGLE_NAME_OPTIMIZATION,
ASL_MSG_SOME_NO_RETVAL,
+ ASL_MSG_STRING_LENGTH,
ASL_MSG_SWITCH_TYPE,
ASL_MSG_SYNC_LEVEL,
ASL_MSG_SYNTAX,
ASL_MSG_TABLE_SIGNATURE,
+ ASL_MSG_TAG_LARGER,
+ ASL_MSG_TAG_SMALLER,
+ ASL_MSG_TIMEOUT,
ASL_MSG_TOO_MANY_TEMPS,
ASL_MSG_UNKNOWN_RESERVED_NAME,
ASL_MSG_UNREACHABLE_CODE,
ASL_MSG_UNSUPPORTED,
+ ASL_MSG_UPPER_CASE,
ASL_MSG_VENDOR_LIST,
ASL_MSG_WRITE,
- ASL_MSG_MULTIPLE_DEFAULT,
- ASL_MSG_TIMEOUT,
- ASL_MSG_RESULT_NOT_USED,
- ASL_MSG_NOT_REFERENCED,
- ASL_MSG_NON_ZERO,
- ASL_MSG_STRING_LENGTH,
- ASL_MSG_SERIALIZED,
- ASL_MSG_COMPILER_RESERVED,
- ASL_MSG_NAMED_OBJECT_IN_WHILE,
- ASL_MSG_LOCAL_OUTSIDE_METHOD,
- ASL_MSG_ALIGNMENT,
- ASL_MSG_ISA_ADDRESS,
- ASL_MSG_INVALID_MIN_MAX,
- ASL_MSG_INVALID_LENGTH,
- ASL_MSG_INVALID_LENGTH_FIXED,
- ASL_MSG_INVALID_GRANULARITY,
- ASL_MSG_INVALID_GRAN_FIXED,
- ASL_MSG_INVALID_ACCESS_SIZE,
- ASL_MSG_INVALID_ADDR_FLAGS,
- ASL_MSG_NULL_DESCRIPTOR,
- ASL_MSG_UPPER_CASE,
- ASL_MSG_HID_LENGTH,
- ASL_MSG_NULL_STRING,
- ASL_MSG_LEADING_ASTERISK,
- ASL_MSG_RESERVED_NO_RETURN_VAL,
- ASL_MSG_GPE_NAME_CONFLICT,
- ASL_MSG_NO_REGION,
- ASL_MSG_INVALID_FIELD_NAME,
- ASL_MSG_INTEGER_SIZE,
- ASL_MSG_INVALID_HEX_INTEGER,
+/* These messages are used by the data table compiler only */
+
ASL_MSG_BUFFER_ELEMENT,
- ASL_MSG_RESERVED_VALUE,
+ ASL_MSG_DIVIDE_BY_ZERO,
ASL_MSG_FLAG_VALUE,
- ASL_MSG_ZERO_VALUE,
- ASL_MSG_UNKNOWN_TABLE,
- ASL_MSG_UNKNOWN_SUBTABLE,
+ ASL_MSG_INTEGER_SIZE,
+ ASL_MSG_INVALID_EXPRESSION,
+ ASL_MSG_INVALID_FIELD_NAME,
+ ASL_MSG_INVALID_HEX_INTEGER,
ASL_MSG_OEM_TABLE,
+ ASL_MSG_RESERVED_VALUE,
ASL_MSG_UNKNOWN_LABEL,
- ASL_MSG_INVALID_EXPRESSION,
- ASL_MSG_DIVIDE_BY_ZERO
+ ASL_MSG_UNKNOWN_SUBTABLE,
+ ASL_MSG_UNKNOWN_TABLE,
+ ASL_MSG_ZERO_VALUE
} ASL_MESSAGE_IDS;
@@ -215,17 +218,17 @@ typedef enum
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",
/* ASL_MSG_AML_NOT_IMPLEMENTED */ "Opcode is not implemented in compiler AML code generator",
/* ASL_MSG_ARG_COUNT_HI */ "Too many arguments",
/* ASL_MSG_ARG_COUNT_LO */ "Too few arguments",
/* ASL_MSG_ARG_INIT */ "Method argument is not initialized",
/* ASL_MSG_BACKWARDS_OFFSET */ "Invalid backwards offset",
-/* ASL_MSG_BITS_TO_BYTES */ "Field offset is in bits, but a byte offset is required",
/* ASL_MSG_BUFFER_LENGTH */ "Effective AML buffer length is zero",
-/* ASL_MSG_BYTES_TO_BITS */ "Field offset is in bytes, but a bit offset is required",
/* ASL_MSG_CLOSE */ "Could not close file",
/* ASL_MSG_COMPILER_INTERNAL */ "Internal compiler error",
+/* ASL_MSG_COMPILER_RESERVED */ "Use of compiler reserved name",
/* ASL_MSG_CONSTANT_EVALUATION */ "Could not evaluate constant expression",
/* ASL_MSG_CONSTANT_FOLDED */ "Constant expression evaluated and reduced",
/* ASL_MSG_CORE_EXCEPTION */ "From ACPI CA Subsystem",
@@ -244,15 +247,24 @@ char *AslMessages [] = {
/* ASL_MSG_FIELD_ACCESS_WIDTH */ "Access width is greater than region size",
/* ASL_MSG_FIELD_UNIT_ACCESS_WIDTH */ "Access width of Field Unit extends beyond region limit",
/* ASL_MSG_FIELD_UNIT_OFFSET */ "Field Unit extends beyond region limit",
+/* ASL_MSG_GPE_NAME_CONFLICT */ "Name conflicts with a previous GPE method",
+/* ASL_MSG_HID_LENGTH */ "_HID string must be exactly 7 or 8 characters",
/* ASL_MSG_INCLUDE_FILE_OPEN */ "Could not open include file",
/* ASL_MSG_INPUT_FILE_OPEN */ "Could not open input file",
/* ASL_MSG_INTEGER_LENGTH */ "64-bit integer in 32-bit table, truncating",
/* ASL_MSG_INTEGER_OPTIMIZATION */ "Integer optimized to single-byte AML opcode",
/* ASL_MSG_INTERRUPT_LIST */ "Too many interrupts (16 max)",
/* ASL_MSG_INTERRUPT_NUMBER */ "Invalid interrupt number (must be 0-15)",
+/* ASL_MSG_INVALID_ACCESS_SIZE */ "Invalid AccessSize (Maximum is 4 - QWord access)",
+/* ASL_MSG_INVALID_ADDR_FLAGS */ "Invalid combination of Length and Min/Max fixed flags",
/* ASL_MSG_INVALID_CONSTANT_OP */ "Invalid operator in constant expression (not type 3/4/5)",
/* ASL_MSG_INVALID_EISAID */ "EISAID string must be of the form \"UUUXXXX\" (3 uppercase, 4 hex digits)",
/* ASL_MSG_INVALID_ESCAPE */ "Invalid or unknown escape sequence",
+/* ASL_MSG_INVALID_GRAN_FIXED */ "Granularity must be zero for fixed Min/Max",
+/* ASL_MSG_INVALID_GRANULARITY */ "Granularity must be zero or a power of two minus one",
+/* ASL_MSG_INVALID_LENGTH */ "Length is larger than Min/Max window",
+/* ASL_MSG_INVALID_LENGTH_FIXED */ "Length is not equal to fixed Min/Max window",
+/* ASL_MSG_INVALID_MIN_MAX */ "Address Min is greater than Address Max",
/* ASL_MSG_INVALID_OPERAND */ "Invalid operand",
/* ASL_MSG_INVALID_PERFORMANCE */ "Invalid performance/robustness value",
/* ASL_MSG_INVALID_PRIORITY */ "Invalid priority value",
@@ -261,28 +273,38 @@ char *AslMessages [] = {
/* ASL_MSG_INVALID_TIME */ "Time parameter too long (255 max)",
/* ASL_MSG_INVALID_TYPE */ "Invalid type",
/* ASL_MSG_INVALID_UUID */ "UUID string must be of the form \"aabbccdd-eeff-gghh-iijj-kkllmmnnoopp\"",
+/* ASL_MSG_ISA_ADDRESS */ "Maximum 10-bit ISA address (0x3FF)",
+/* ASL_MSG_LEADING_ASTERISK */ "Invalid leading asterisk",
/* ASL_MSG_LIST_LENGTH_LONG */ "Initializer list longer than declared package length",
/* ASL_MSG_LIST_LENGTH_SHORT */ "Initializer list shorter than declared package length",
/* ASL_MSG_LISTING_FILE_OPEN */ "Could not open listing file",
/* ASL_MSG_LISTING_FILENAME */ "Could not create listing filename",
/* ASL_MSG_LOCAL_INIT */ "Method local variable is not initialized",
+/* ASL_MSG_LOCAL_OUTSIDE_METHOD */ "Local or Arg used outside a control method",
/* ASL_MSG_LONG_LINE */ "Splitting long input line",
/* ASL_MSG_MEMORY_ALLOCATION */ "Memory allocation failure",
/* ASL_MSG_MISSING_ENDDEPENDENT */ "Missing EndDependentFn() macro in dependent resource list",
/* ASL_MSG_MISSING_STARTDEPENDENT */ "Missing StartDependentFn() macro in dependent resource list",
+/* ASL_MSG_MULTIPLE_DEFAULT */ "More than one Default statement within Switch construct",
/* ASL_MSG_MULTIPLE_TYPES */ "Multiple types",
/* ASL_MSG_NAME_EXISTS */ "Name already exists in scope",
/* ASL_MSG_NAME_OPTIMIZATION */ "NamePath optimized",
+/* ASL_MSG_NAMED_OBJECT_IN_WHILE */ "Creating a named object in a While loop",
/* ASL_MSG_NESTED_COMMENT */ "Nested comment found",
/* ASL_MSG_NO_CASES */ "No Case statements under Switch",
+/* ASL_MSG_NO_REGION */ "_REG has no corresponding Operation Region",
/* ASL_MSG_NO_RETVAL */ "Called method returns no value",
/* ASL_MSG_NO_WHILE */ "No enclosing While statement",
/* ASL_MSG_NON_ASCII */ "Invalid characters found in file",
+/* ASL_MSG_NON_ZERO */ "Operand evaluates to zero",
/* ASL_MSG_NOT_EXIST */ "Object does not exist",
/* ASL_MSG_NOT_FOUND */ "Object not found or not accessible from scope",
/* ASL_MSG_NOT_METHOD */ "Not a control method, cannot invoke",
/* ASL_MSG_NOT_PARAMETER */ "Not a parameter, used as local only",
/* ASL_MSG_NOT_REACHABLE */ "Object is not accessible from this scope",
+/* ASL_MSG_NOT_REFERENCED */ "Namespace object is not referenced",
+/* ASL_MSG_NULL_DESCRIPTOR */ "Min/Max/Length/Gran are all zero, but no resource tag",
+/* ASL_MSG_NULL_STRING */ "Invalid zero-length (null) string",
/* ASL_MSG_OPEN */ "Could not open file",
/* ASL_MSG_OUTPUT_FILE_OPEN */ "Could not open output AML file",
/* ASL_MSG_OUTPUT_FILENAME */ "Could not create output filename",
@@ -294,6 +316,7 @@ char *AslMessages [] = {
/* ASL_MSG_RESERVED_ARG_COUNT_HI */ "Reserved method has too many arguments",
/* ASL_MSG_RESERVED_ARG_COUNT_LO */ "Reserved method has too few arguments",
/* ASL_MSG_RESERVED_METHOD */ "Reserved name must be a control method",
+/* ASL_MSG_RESERVED_NO_RETURN_VAL */ "Reserved method should not return a value",
/* ASL_MSG_RESERVED_OPERAND_TYPE */ "Invalid object type for reserved name",
/* ASL_MSG_RESERVED_RETURN_VALUE */ "Reserved method must return a value",
/* ASL_MSG_RESERVED_USE */ "Invalid use of reserved name",
@@ -302,65 +325,45 @@ char *AslMessages [] = {
/* ASL_MSG_RESOURCE_INDEX */ "Missing ResourceSourceIndex (required)",
/* ASL_MSG_RESOURCE_LIST */ "Too many resource items (internal error)",
/* ASL_MSG_RESOURCE_SOURCE */ "Missing ResourceSource string (required)",
+/* ASL_MSG_RESULT_NOT_USED */ "Result is not used, operator has no effect",
/* ASL_MSG_RETURN_TYPES */ "Not all control paths return a value",
/* ASL_MSG_SCOPE_FWD_REF */ "Forward references from Scope operator not allowed",
/* 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_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",
/* ASL_MSG_SWITCH_TYPE */ "Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer",
/* ASL_MSG_SYNC_LEVEL */ "SyncLevel must be in the range 0-15",
/* ASL_MSG_SYNTAX */ "",
/* ASL_MSG_TABLE_SIGNATURE */ "Invalid Table Signature",
+/* ASL_MSG_TAG_LARGER */ "ResourceTag larger than Field",
+/* ASL_MSG_TAG_SMALLER */ "ResourceTag smaller than Field",
+/* ASL_MSG_TIMEOUT */ "Result is not used, possible operator timeout will be missed",
/* ASL_MSG_TOO_MANY_TEMPS */ "Method requires too many temporary variables (_T_x)",
/* ASL_MSG_UNKNOWN_RESERVED_NAME */ "Unknown reserved name",
/* ASL_MSG_UNREACHABLE_CODE */ "Statement is unreachable",
/* ASL_MSG_UNSUPPORTED */ "Unsupported feature",
+/* ASL_MSG_UPPER_CASE */ "Non-hex letters must be upper case",
/* ASL_MSG_VENDOR_LIST */ "Too many vendor data bytes (7 max)",
/* ASL_MSG_WRITE */ "Could not write file",
-/* ASL_MSG_MULTIPLE_DEFAULT */ "More than one Default statement within Switch construct",
-/* ASL_MSG_TIMEOUT */ "Result is not used, possible operator timeout will be missed",
-/* ASL_MSG_RESULT_NOT_USED */ "Result is not used, operator has no effect",
-/* ASL_MSG_NOT_REFERENCED */ "Namespace object is not referenced",
-/* ASL_MSG_NON_ZERO */ "Operand evaluates to zero",
-/* ASL_MSG_STRING_LENGTH */ "String literal too long",
-/* ASL_MSG_SERIALIZED */ "Control Method marked Serialized",
-/* ASL_MSG_COMPILER_RESERVED */ "Use of compiler reserved name",
-/* ASL_MSG_NAMED_OBJECT_IN_WHILE */ "Creating a named object in a While loop",
-/* ASL_MSG_LOCAL_OUTSIDE_METHOD */ "Local or Arg used outside a control method",
-/* ASL_MSG_ALIGNMENT */ "Must be a multiple of alignment/granularity value",
-/* ASL_MSG_ISA_ADDRESS */ "Maximum 10-bit ISA address (0x3FF)",
-/* ASL_MSG_INVALID_MIN_MAX */ "Address Min is greater than Address Max",
-/* ASL_MSG_INVALID_LENGTH */ "Length is larger than Min/Max window",
-/* ASL_MSG_INVALID_LENGTH_FIXED */ "Length is not equal to fixed Min/Max window",
-/* ASL_MSG_INVALID_GRANULARITY */ "Granularity must be zero or a power of two minus one",
-/* ASL_MSG_INVALID_GRAN_FIXED */ "Granularity must be zero for fixed Min/Max",
-/* ASL_MSG_INVALID_ACCESS_SIZE */ "Invalid AccessSize (Maximum is 4 - QWord access)",
-/* ASL_MSG_INVALID_ADDR_FLAGS */ "Invalid combination of Length and Min/Max fixed flags",
-/* ASL_MSG_NULL_DESCRIPTOR */ "Min/Max/Length/Gran are all zero, but no resource tag",
-/* ASL_MSG_UPPER_CASE */ "Non-hex letters must be upper case",
-/* ASL_MSG_HID_LENGTH */ "_HID string must be exactly 7 or 8 characters",
-/* ASL_MSG_NULL_STRING */ "Invalid zero-length (null) string",
-/* ASL_MSG_LEADING_ASTERISK */ "Invalid leading asterisk",
-/* ASL_MSG_RESERVED_NO_RETURN_VAL */ "Reserved method should not return a value",
-/* ASL_MSG_GPE_NAME_CONFLICT */ "Name conflicts with a previous GPE method",
-/* ASL_MSG_NO_REGION */ "_REG has no corresponding Operation Region",
/* These messages are used by the data table compiler only */
-/* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name",
-/* ASL_MSG_INTEGER_SIZE */ "Integer too large for target",
-/* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant",
/* ASL_MSG_BUFFER_ELEMENT */ "Invalid element in buffer initializer list",
-/* ASL_MSG_RESERVED_VALUE */ "Reserved field must be zero",
+/* ASL_MSG_DIVIDE_BY_ZERO */ "Expression contains divide-by-zero",
/* ASL_MSG_FLAG_VALUE */ "Flag value is too large",
-/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero",
-/* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
-/* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
+/* ASL_MSG_INTEGER_SIZE */ "Integer too large for target",
+/* ASL_MSG_INVALID_EXPRESSION */ "Invalid expression",
+/* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name",
+/* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant",
/* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents",
+/* ASL_MSG_RESERVED_VALUE */ "Reserved field must be zero",
/* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined",
-/* ASL_MSG_INVALID_EXPRESSION */ "Invalid expression",
-/* ASL_MSG_DIVIDE_BY_ZERO */ "Expression contains divide-by-zero"
+/* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
+/* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
+/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero"
};
diff --git a/compiler/asloperands.c b/compiler/asloperands.c
index c8821e6ccd66..5e729ce365c7 100644
--- a/compiler/asloperands.c
+++ b/compiler/asloperands.c
@@ -761,6 +761,7 @@ OpnDoPackage (
if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) ||
(PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST) ||
+ (PackageLengthOp->Asl.ParseOpcode == PARSEOP_ZERO) ||
(PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG))
{
if (!PackageLength)
@@ -778,8 +779,11 @@ OpnDoPackage (
* If the PackageLength is a constant <= 255, we can change the
* AML opcode from VarPackage to a simple (ACPI 1.0) Package opcode.
*/
- if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) &&
- (Op->Asl.Child->Asl.Value.Integer <= 255))
+ if (((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) &&
+ (Op->Asl.Child->Asl.Value.Integer <= 255)) ||
+ (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONE) ||
+ (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONES)||
+ (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ZERO))
{
Op->Asl.AmlOpcode = AML_PACKAGE_OP;
Op->Asl.ParseOpcode = PARSEOP_PACKAGE;
diff --git a/compiler/aslpredef.c b/compiler/aslpredef.c
index a83674b270c7..f1fec290bc3f 100644
--- a/compiler/aslpredef.c
+++ b/compiler/aslpredef.c
@@ -658,6 +658,7 @@ ApCheckObjectType (
break;
case PARSEOP_PACKAGE:
+ case PARSEOP_VAR_PACKAGE:
ReturnBtype = ACPI_RTYPE_PACKAGE;
break;
diff --git a/compiler/aslresource.c b/compiler/aslresource.c
index 5ea36dced0c3..0954b8460d5d 100644
--- a/compiler/aslresource.c
+++ b/compiler/aslresource.c
@@ -437,13 +437,14 @@ RsAllocateResourceNode (
/*******************************************************************************
*
- * FUNCTION: RsCreateBitField
+ * FUNCTION: RsCreateResourceField
*
* PARAMETERS: Op - Resource field node
* Name - Name of the field (Used only to reference
* the field in the ASL, not in the AML)
* ByteOffset - Offset from the field start
* BitOffset - Additional bit offset
+ * BitLength - Number of bits in the field
*
* RETURN: None, sets fields within the input node
*
@@ -454,46 +455,20 @@ RsAllocateResourceNode (
******************************************************************************/
void
-RsCreateBitField (
+RsCreateResourceField (
ACPI_PARSE_OBJECT *Op,
char *Name,
UINT32 ByteOffset,
- UINT32 BitOffset)
+ UINT32 BitOffset,
+ UINT32 BitLength)
{
- Op->Asl.ExternalName = Name;
- Op->Asl.Value.Integer = ((UINT64) ByteOffset * 8) + BitOffset;
- Op->Asl.CompileFlags |= (NODE_IS_RESOURCE_FIELD | NODE_IS_BIT_OFFSET);
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: RsCreateByteField
- *
- * PARAMETERS: Op - Resource field node
- * Name - Name of the field (Used only to reference
- * the field in the ASL, not in the AML)
- * ByteOffset - Offset from the field start
- *
- * RETURN: None, sets fields within the input node
- *
- * DESCRIPTION: Utility function to generate a named byte field within a
- * resource descriptor. Mark a node as 1) a field in a resource
- * descriptor, and 2) set the value to be a BYTE offset
- *
- ******************************************************************************/
+ Op->Asl.ExternalName = Name;
+ Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
-void
-RsCreateByteField (
- ACPI_PARSE_OBJECT *Op,
- char *Name,
- UINT32 ByteOffset)
-{
- Op->Asl.ExternalName = Name;
- Op->Asl.Value.Integer = ByteOffset;
- Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD;
+ Op->Asl.Value.Tag.BitOffset = (ByteOffset * 8) + BitOffset;
+ Op->Asl.Value.Tag.BitLength = BitLength;
}
diff --git a/compiler/aslrestype1.c b/compiler/aslrestype1.c
index 4db8b09ae300..996eee727489 100644
--- a/compiler/aslrestype1.c
+++ b/compiler/aslrestype1.c
@@ -179,7 +179,7 @@ RsDoMemory24Descriptor (
case 1: /* Min Address */
Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum));
MinOp = InitializerOp;
break;
@@ -187,7 +187,7 @@ RsDoMemory24Descriptor (
case 2: /* Max Address */
Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum));
MaxOp = InitializerOp;
break;
@@ -195,14 +195,14 @@ RsDoMemory24Descriptor (
case 3: /* Alignment */
Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment));
break;
case 4: /* Length */
Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength));
LengthOp = InitializerOp;
break;
@@ -286,7 +286,7 @@ RsDoMemory32Descriptor (
case 1: /* Min Address */
Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum));
MinOp = InitializerOp;
break;
@@ -294,7 +294,7 @@ RsDoMemory32Descriptor (
case 2: /* Max Address */
Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum));
MaxOp = InitializerOp;
break;
@@ -302,7 +302,7 @@ RsDoMemory32Descriptor (
case 3: /* Alignment */
Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment));
AlignOp = InitializerOp;
break;
@@ -310,7 +310,7 @@ RsDoMemory32Descriptor (
case 4: /* Length */
Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength));
LengthOp = InitializerOp;
break;
@@ -390,14 +390,14 @@ RsDoMemory32FixedDescriptor (
case 1: /* Address */
Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address));
break;
case 2: /* Length */
Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
break;
diff --git a/compiler/aslrestype1i.c b/compiler/aslrestype1i.c
index 80645df3cee2..2c8c79044369 100644
--- a/compiler/aslrestype1i.c
+++ b/compiler/aslrestype1i.c
@@ -102,8 +102,8 @@ RsDoDmaDescriptor (
case 0: /* DMA type */
RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 5, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_DMATYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_DMATYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5, 2);
break;
case 1: /* Bus Master */
@@ -116,8 +116,8 @@ RsDoDmaDescriptor (
case 2: /* Xfer Type (transfer width) */
RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 0, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_XFERTYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_XFERTYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0, 2);
break;
case 3: /* Name */
@@ -223,7 +223,7 @@ RsDoFixedIoDescriptor (
Descriptor->FixedIo.Address =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS,
CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address));
AddressOp = InitializerOp;
break;
@@ -314,7 +314,7 @@ RsDoIoDescriptor (
Descriptor->Io.Minimum =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum));
MinOp = InitializerOp;
break;
@@ -323,7 +323,7 @@ RsDoIoDescriptor (
Descriptor->Io.Maximum =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum));
MaxOp = InitializerOp;
break;
@@ -480,7 +480,7 @@ RsDoIrqDescriptor (
/* Create a named field at the start of the list */
- RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask));
}
break;
@@ -580,7 +580,7 @@ RsDoIrqNoFlagsDescriptor (
/* Create a named field at the start of the list */
- RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask));
}
break;
diff --git a/compiler/aslrestype2.c b/compiler/aslrestype2.c
index b41c90972737..31119d75d5dd 100644
--- a/compiler/aslrestype2.c
+++ b/compiler/aslrestype2.c
@@ -120,7 +120,7 @@ RsDoGeneralRegisterDescriptor (
case 3: /* Register Address */
Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESS,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS,
CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address));
break;
@@ -354,7 +354,7 @@ RsDoInterruptDescriptor (
/* Create a named field at the start of the list */
- RsCreateByteField (InitializerOp, ACPI_RESTAG_INTERRUPT,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_INTERRUPT,
CurrentByteOffset +
ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]));
}
diff --git a/compiler/aslrestype2d.c b/compiler/aslrestype2d.c
index b1854267d47f..e17c10b89f0a 100644
--- a/compiler/aslrestype2d.c
+++ b/compiler/aslrestype2d.c
@@ -144,15 +144,15 @@ RsDoDwordIoDescriptor (
case 4: /* Range Type */
RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 3);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0, 2);
break;
case 5: /* Address Granularity */
Descriptor->Address32.Granularity =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
GranOp = InitializerOp;
break;
@@ -161,7 +161,7 @@ RsDoDwordIoDescriptor (
Descriptor->Address32.Minimum =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
MinOp = InitializerOp;
break;
@@ -170,7 +170,7 @@ RsDoDwordIoDescriptor (
Descriptor->Address32.Maximum =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
MaxOp = InitializerOp;
break;
@@ -179,7 +179,7 @@ RsDoDwordIoDescriptor (
Descriptor->Address32.TranslationOffset =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
break;
@@ -187,7 +187,7 @@ RsDoDwordIoDescriptor (
Descriptor->Address32.AddressLength =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
LengthOp = InitializerOp;
break;
@@ -376,8 +376,8 @@ RsDoDwordMemoryDescriptor (
case 4: /* Memory Type */
RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 1, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1, 2);
break;
case 5: /* Read/Write Type */
@@ -391,7 +391,7 @@ RsDoDwordMemoryDescriptor (
Descriptor->Address32.Granularity =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
GranOp = InitializerOp;
break;
@@ -400,7 +400,7 @@ RsDoDwordMemoryDescriptor (
Descriptor->Address32.Minimum =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
MinOp = InitializerOp;
break;
@@ -409,7 +409,7 @@ RsDoDwordMemoryDescriptor (
Descriptor->Address32.Maximum =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
MaxOp = InitializerOp;
break;
@@ -418,7 +418,7 @@ RsDoDwordMemoryDescriptor (
Descriptor->Address32.TranslationOffset =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
break;
@@ -426,7 +426,7 @@ RsDoDwordMemoryDescriptor (
Descriptor->Address32.AddressLength =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
LengthOp = InitializerOp;
break;
@@ -488,8 +488,8 @@ RsDoDwordMemoryDescriptor (
case 14: /* Address Range */
RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 3, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3, 2);
break;
case 15: /* Type */
@@ -623,7 +623,7 @@ RsDoDwordSpaceDescriptor (
Descriptor->Address32.Granularity =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity));
GranOp = InitializerOp;
break;
@@ -632,7 +632,7 @@ RsDoDwordSpaceDescriptor (
Descriptor->Address32.Minimum =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum));
MinOp = InitializerOp;
break;
@@ -641,7 +641,7 @@ RsDoDwordSpaceDescriptor (
Descriptor->Address32.Maximum =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum));
MaxOp = InitializerOp;
break;
@@ -650,7 +650,7 @@ RsDoDwordSpaceDescriptor (
Descriptor->Address32.TranslationOffset =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset));
break;
@@ -658,7 +658,7 @@ RsDoDwordSpaceDescriptor (
Descriptor->Address32.AddressLength =
(UINT32) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength));
LengthOp = InitializerOp;
break;
diff --git a/compiler/aslrestype2e.c b/compiler/aslrestype2e.c
index a426c048fb08..65d389c5011b 100644
--- a/compiler/aslrestype2e.c
+++ b/compiler/aslrestype2e.c
@@ -136,14 +136,14 @@ RsDoExtendedIoDescriptor (
case 4: /* Range Type */
RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 3);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0, 2);
break;
case 5: /* Address Granularity */
Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
GranOp = InitializerOp;
break;
@@ -151,7 +151,7 @@ RsDoExtendedIoDescriptor (
case 6: /* Address Min */
Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
MinOp = InitializerOp;
break;
@@ -159,7 +159,7 @@ RsDoExtendedIoDescriptor (
case 7: /* Address Max */
Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
MaxOp = InitializerOp;
break;
@@ -167,14 +167,14 @@ RsDoExtendedIoDescriptor (
case 8: /* Translation Offset */
Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
break;
case 9: /* Address Length */
Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
LengthOp = InitializerOp;
break;
@@ -182,7 +182,7 @@ RsDoExtendedIoDescriptor (
case 10: /* Type-Specific Attributes */
Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
break;
@@ -309,8 +309,8 @@ RsDoExtendedMemoryDescriptor (
case 4: /* Memory Type */
RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 1, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1, 2);
break;
case 5: /* Read/Write Type */
@@ -323,7 +323,7 @@ RsDoExtendedMemoryDescriptor (
case 6: /* Address Granularity */
Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
GranOp = InitializerOp;
break;
@@ -331,7 +331,7 @@ RsDoExtendedMemoryDescriptor (
case 7: /* Min Address */
Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
MinOp = InitializerOp;
break;
@@ -339,7 +339,7 @@ RsDoExtendedMemoryDescriptor (
case 8: /* Max Address */
Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
MaxOp = InitializerOp;
break;
@@ -347,14 +347,14 @@ RsDoExtendedMemoryDescriptor (
case 9: /* Translation Offset */
Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
break;
case 10: /* Address Length */
Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
LengthOp = InitializerOp;
break;
@@ -362,7 +362,7 @@ RsDoExtendedMemoryDescriptor (
case 11: /* Type-Specific Attributes */
Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
break;
@@ -375,8 +375,8 @@ RsDoExtendedMemoryDescriptor (
case 13: /* Address Range */
RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 3, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
- CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3, 2);
break;
case 14: /* Type */
@@ -501,7 +501,7 @@ RsDoExtendedSpaceDescriptor (
case 6: /* Address Granularity */
Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity));
GranOp = InitializerOp;
break;
@@ -509,7 +509,7 @@ RsDoExtendedSpaceDescriptor (
case 7: /* Min Address */
Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum));
MinOp = InitializerOp;
break;
@@ -517,7 +517,7 @@ RsDoExtendedSpaceDescriptor (
case 8: /* Max Address */
Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum));
MaxOp = InitializerOp;
break;
@@ -525,14 +525,14 @@ RsDoExtendedSpaceDescriptor (
case 9: /* Translation Offset */
Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset));
break;
case 10: /* Address Length */
Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength));
LengthOp = InitializerOp;
break;
@@ -540,7 +540,7 @@ RsDoExtendedSpaceDescriptor (
case 11: /* Type-Specific Attributes */
Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES,
CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific));
break;
diff --git a/compiler/aslrestype2q.c b/compiler/aslrestype2q.c
index 8df910ca67a6..00882f79d58f 100644
--- a/compiler/aslrestype2q.c
+++ b/compiler/aslrestype2q.c
@@ -144,14 +144,14 @@ RsDoQwordIoDescriptor (
case 4: /* Range Type */
RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 3);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0, 2);
break;
case 5: /* Address Granularity */
Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
GranOp = InitializerOp;
break;
@@ -159,7 +159,7 @@ RsDoQwordIoDescriptor (
case 6: /* Address Min */
Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
MinOp = InitializerOp;
break;
@@ -167,7 +167,7 @@ RsDoQwordIoDescriptor (
case 7: /* Address Max */
Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
MaxOp = InitializerOp;
break;
@@ -182,7 +182,7 @@ RsDoQwordIoDescriptor (
case 9: /* Address Length */
Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
LengthOp = InitializerOp;
break;
@@ -366,8 +366,8 @@ RsDoQwordMemoryDescriptor (
case 4: /* Memory Type */
RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 1, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1, 2);
break;
case 5: /* Read/Write Type */
@@ -380,7 +380,7 @@ RsDoQwordMemoryDescriptor (
case 6: /* Address Granularity */
Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
GranOp = InitializerOp;
break;
@@ -388,7 +388,7 @@ RsDoQwordMemoryDescriptor (
case 7: /* Min Address */
Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
MinOp = InitializerOp;
break;
@@ -396,7 +396,7 @@ RsDoQwordMemoryDescriptor (
case 8: /* Max Address */
Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
MaxOp = InitializerOp;
break;
@@ -404,14 +404,14 @@ RsDoQwordMemoryDescriptor (
case 9: /* Translation Offset */
Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
break;
case 10: /* Address Length */
Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
LengthOp = InitializerOp;
break;
@@ -473,8 +473,8 @@ RsDoQwordMemoryDescriptor (
case 14: /* Address Range */
RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 3, 0);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3, 2);
break;
case 15: /* Type */
@@ -607,7 +607,7 @@ RsDoQwordSpaceDescriptor (
case 6: /* Address Granularity */
Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity));
GranOp = InitializerOp;
break;
@@ -615,7 +615,7 @@ RsDoQwordSpaceDescriptor (
case 7: /* Min Address */
Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum));
MinOp = InitializerOp;
break;
@@ -623,7 +623,7 @@ RsDoQwordSpaceDescriptor (
case 8: /* Max Address */
Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum));
MaxOp = InitializerOp;
break;
@@ -631,14 +631,14 @@ RsDoQwordSpaceDescriptor (
case 9: /* Translation Offset */
Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset));
break;
case 10: /* Address Length */
Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength));
LengthOp = InitializerOp;
break;
diff --git a/compiler/aslrestype2w.c b/compiler/aslrestype2w.c
index 31b6b79de149..559e1ddb6f37 100644
--- a/compiler/aslrestype2w.c
+++ b/compiler/aslrestype2w.c
@@ -144,14 +144,14 @@ RsDoWordIoDescriptor (
case 4: /* Range Type */
RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 0, 3);
- RsCreateBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
- CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0);
+ RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE,
+ CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0, 2);
break;
case 5: /* Address Granularity */
Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
GranOp = InitializerOp;
break;
@@ -159,7 +159,7 @@ RsDoWordIoDescriptor (
case 6: /* Address Min */
Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
MinOp = InitializerOp;
break;
@@ -167,7 +167,7 @@ RsDoWordIoDescriptor (
case 7: /* Address Max */
Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
MaxOp = InitializerOp;
break;
@@ -175,14 +175,14 @@ RsDoWordIoDescriptor (
case 8: /* Translation Offset */
Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
break;
case 9: /* Address Length */
Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
LengthOp = InitializerOp;
break;
@@ -367,7 +367,7 @@ RsDoWordBusNumberDescriptor (
Descriptor->Address16.Granularity =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
GranOp = InitializerOp;
break;
@@ -376,7 +376,7 @@ RsDoWordBusNumberDescriptor (
Descriptor->Address16.Minimum =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
MinOp = InitializerOp;
break;
@@ -385,7 +385,7 @@ RsDoWordBusNumberDescriptor (
Descriptor->Address16.Maximum =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
MaxOp = InitializerOp;
break;
@@ -394,7 +394,7 @@ RsDoWordBusNumberDescriptor (
Descriptor->Address16.TranslationOffset =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
break;
@@ -402,7 +402,7 @@ RsDoWordBusNumberDescriptor (
Descriptor->Address16.AddressLength =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
LengthOp = InitializerOp;
break;
@@ -584,7 +584,7 @@ RsDoWordSpaceDescriptor (
Descriptor->Address16.Granularity =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_GRANULARITY,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity));
GranOp = InitializerOp;
break;
@@ -593,7 +593,7 @@ RsDoWordSpaceDescriptor (
Descriptor->Address16.Minimum =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MINADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum));
MinOp = InitializerOp;
break;
@@ -602,7 +602,7 @@ RsDoWordSpaceDescriptor (
Descriptor->Address16.Maximum =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_MAXADDR,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum));
MaxOp = InitializerOp;
break;
@@ -611,7 +611,7 @@ RsDoWordSpaceDescriptor (
Descriptor->Address16.TranslationOffset =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset));
break;
@@ -619,7 +619,7 @@ RsDoWordSpaceDescriptor (
Descriptor->Address16.AddressLength =
(UINT16) InitializerOp->Asl.Value.Integer;
- RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH,
+ RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH,
CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength));
LengthOp = InitializerOp;
break;
diff --git a/compiler/asltree.c b/compiler/asltree.c
index ded426ac44c5..3874ff6e23e4 100644
--- a/compiler/asltree.c
+++ b/compiler/asltree.c
@@ -287,9 +287,6 @@ TrGetNodeFlagName (
case NODE_METHOD_TYPED:
return ("NODE_METHOD_TYPED");
- case NODE_IS_BIT_OFFSET:
- return ("NODE_IS_BIT_OFFSET");
-
case NODE_COMPILE_TIME_CONST:
return ("NODE_COMPILE_TIME_CONST");
diff --git a/compiler/asltypes.h b/compiler/asltypes.h
index 8d9b9ed5a127..11f4afdd6a35 100644
--- a/compiler/asltypes.h
+++ b/compiler/asltypes.h
@@ -68,7 +68,7 @@
#define NODE_METHOD_SOME_NO_RETVAL 0x00000200
#define NODE_RESULT_NOT_USED 0x00000400
#define NODE_METHOD_TYPED 0x00000800
-#define NODE_IS_BIT_OFFSET 0x00001000
+#define NODE_UNUSED_FLAG 0x00001000
#define NODE_COMPILE_TIME_CONST 0x00002000
#define NODE_IS_TERM_ARG 0x00004000
#define NODE_WAS_ONES_OP 0x00008000
@@ -144,8 +144,10 @@ typedef struct asl_file_status
} ASL_FILE_STATUS;
-/* File types */
-
+/*
+ * File types. Note: Any changes to this table must also be reflected
+ * in the AslFileTypeNames array.
+ */
typedef enum
{
ASL_FILE_STDOUT = 0,
diff --git a/compiler/aslutils.c b/compiler/aslutils.c
index 79fad1d811d3..f8309672e23c 100644
--- a/compiler/aslutils.c
+++ b/compiler/aslutils.c
@@ -53,11 +53,31 @@
#define _COMPONENT ACPI_COMPILER
ACPI_MODULE_NAME ("aslutils")
+
char AslHexLookup[] =
{
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
};
+/* Table below must match ASL_FILE_TYPES in asltypes.h */
+
+static const char *AslFileTypeNames [ASL_NUM_FILES] =
+{
+ "stdout: ",
+ "stderr: ",
+ "Table Input: ",
+ "Binary Output:",
+ "Source Output:",
+ "Listing File: ",
+ "Hex Dump: ",
+ "Namespace: ",
+ "Debug File: ",
+ "ASM Source: ",
+ "C Source: ",
+ "ASM Include: ",
+ "C Include: "
+};
+
/* Local prototypes */
@@ -451,35 +471,40 @@ void
UtDisplaySummary (
UINT32 FileId)
{
+ UINT32 i;
+
if (FileId != ASL_FILE_STDOUT)
{
/* Compiler name and version number */
- FlPrintFile (FileId, "%s version %X%s [%s]\n",
+ FlPrintFile (FileId, "%s version %X%s [%s]\n\n",
ASL_COMPILER_NAME, (UINT32) ACPI_CA_VERSION, ACPI_WIDTH, __DATE__);
}
+ /* Summary of main input and output files */
+
if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA)
{
FlPrintFile (FileId,
- "Table Input: %s - %u lines, %u bytes, %u fields\n",
+ "%-14s %s - %u lines, %u bytes, %u fields\n",
+ "Table Input:",
Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
Gbl_InputByteCount, Gbl_InputFieldCount);
if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
{
FlPrintFile (FileId,
- "Binary Output: %s - %u bytes\n\n",
+ "%-14s %s - %u bytes\n",
+ "Binary Output:",
Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength);
}
}
else
{
- /* Input/Output summary */
-
FlPrintFile (FileId,
- "ASL Input: %s - %u lines, %u bytes, %u keywords\n",
+ "%-14s %s - %u lines, %u bytes, %u keywords\n",
+ "ASL Input:",
Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber,
Gbl_InputByteCount, TotalKeywords);
@@ -488,16 +513,38 @@ UtDisplaySummary (
if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors))
{
FlPrintFile (FileId,
- "AML Output: %s - %u bytes, %u named objects, %u executable opcodes\n\n",
+ "%-14s %s - %u bytes, %u named objects, %u executable opcodes\n",
+ "AML Output:",
Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength,
TotalNamedObjects, TotalExecutableOpcodes);
}
}
+ /* Display summary of any optional files */
+
+ for (i = ASL_FILE_SOURCE_OUTPUT; i <= ASL_MAX_FILE_TYPE; i++)
+ {
+ if (!Gbl_Files[i].Filename || !Gbl_Files[i].Handle)
+ {
+ continue;
+ }
+
+ /* .SRC is a temp file unless specifically requested */
+
+ if ((i == ASL_FILE_SOURCE_OUTPUT) && (!Gbl_SourceOutputFlag))
+ {
+ continue;
+ }
+
+ FlPrintFile (FileId, "%14s %s - %u bytes\n",
+ AslFileTypeNames [i],
+ Gbl_Files[i].Filename, FlGetFileSize (i));
+ }
+
/* Error summary */
FlPrintFile (FileId,
- "Compilation complete. %u Errors, %u Warnings, %u Remarks",
+ "\nCompilation complete. %u Errors, %u Warnings, %u Remarks",
Gbl_ExceptionCount[ASL_ERROR],
Gbl_ExceptionCount[ASL_WARNING] +
Gbl_ExceptionCount[ASL_WARNING2] +
diff --git a/compiler/dtcompile.c b/compiler/dtcompile.c
index 7f4a824b18cf..91c32ac2e571 100644
--- a/compiler/dtcompile.c
+++ b/compiler/dtcompile.c
@@ -329,7 +329,7 @@ DtCompileDataTable (
/* Validate the signature via the ACPI table list */
TableData = AcpiDmGetTableData (Signature);
- if (!TableData)
+ if (!TableData || Gbl_CompileGeneric)
{
DtCompileGeneric ((void **) FieldList);
goto Out;