diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/Makefile | 571 | ||||
-rw-r--r-- | compiler/aslcompile.c | 2 | ||||
-rw-r--r-- | compiler/aslcompiler.h | 11 | ||||
-rw-r--r-- | compiler/asldefine.h | 20 | ||||
-rw-r--r-- | compiler/aslfiles.c | 6 | ||||
-rw-r--r-- | compiler/aslglobal.h | 1 | ||||
-rw-r--r-- | compiler/asllisting.c | 10 | ||||
-rw-r--r-- | compiler/aslload.c | 16 | ||||
-rw-r--r-- | compiler/asllookup.c | 109 | ||||
-rw-r--r-- | compiler/aslmain.c | 98 | ||||
-rw-r--r-- | compiler/aslmessages.h | 155 | ||||
-rw-r--r-- | compiler/asloperands.c | 8 | ||||
-rw-r--r-- | compiler/aslpredef.c | 1 | ||||
-rw-r--r-- | compiler/aslresource.c | 43 | ||||
-rw-r--r-- | compiler/aslrestype1.c | 20 | ||||
-rw-r--r-- | compiler/aslrestype1i.c | 18 | ||||
-rw-r--r-- | compiler/aslrestype2.c | 4 | ||||
-rw-r--r-- | compiler/aslrestype2d.c | 42 | ||||
-rw-r--r-- | compiler/aslrestype2e.c | 48 | ||||
-rw-r--r-- | compiler/aslrestype2q.c | 40 | ||||
-rw-r--r-- | compiler/aslrestype2w.c | 34 | ||||
-rw-r--r-- | compiler/asltree.c | 3 | ||||
-rw-r--r-- | compiler/asltypes.h | 8 | ||||
-rw-r--r-- | compiler/aslutils.c | 63 | ||||
-rw-r--r-- | compiler/dtcompile.c | 2 |
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; |